定義: 一度に 1 つのプロセス (スレッド) だけがリソースを所有できるように、共有リソースを保護します。
原則: セマフォの値が正の場合は、アイドル状態であることを意味します。0 または負の場合は、占有されていることを意味します。
カテゴリ: カーネル セマフォとユーザー セマフォ、ユーザー セマフォは POXIS セマフォと SYSTEMV セマフォに分けられ、POXIS セマフォは名前付きセマフォと名前なしセマフォに分けられます
カーネル セマフォ:
#incl ude
void sema_init(struct semaphore *sem, int val);
void init_MUTEX(struct semaphore *sem) //初期値 1
void init_MUTEX_LOCKED(struct semaphore *sem); //イニシャルvalue 0
void down(struct semaphore *sem); //スリープ可能
int down_interruptible(struct semaphore *sem) //中断可能
int down_trylock(struct semaphore *sem); //m ノンブロッキング oVoid Up (構造体セマフォ *SEM);
#Include & LT; SYS/SEM.H & GT;
INT SEMGET (Key_t Key, INT) NSEMS, int oflag);
int semop(int semid, struct sembuf *oppsptr, size_t nops);
int semctl(int semid, int semum, int cmd,...);
POSIX の nameless Semaphore
#include
sem_t sem;
int sem_init(sem_t *sem, int pshared, unsigned int val); // pshared が 0 の場合、共有されていますスレッド間、pshared 1 親子プロセス共有
int sem_wait(sem_t *sem) //ブロッキング
int sem_trywait(sem_t *sem); //ノンブロッキング
int sem_post(sem_t) *sem);
以上がLinuxの各種セマフォを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。