ホームページ  >  記事  >  運用・保守  >  Linuxの各種セマフォを詳しく解説

Linuxの各種セマフォを詳しく解説

PHP中文网
PHP中文网オリジナル
2017-06-21 13:58:513634ブラウズ

定義: 一度に 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);

  • int sem_destroy(sem_t *sem);

  • プロセス間で共有する場合、sem は共有メモリ領域 (mmap、shm_open、shmget) に配置する必要があります。グローバル変数、heap、親プロセスのスタックは受け入れられません

  • POSIX名前付きセマフォ

  • sem_t *sem_open(const char *name, int oflag, mode_t mode, int val);

int sem_wait(sem_t *sem) ;

  • int sem_trywait( sem_t* sem);

  • int sem_post(sem_t *sem);

  • int sem_close(sem_t *sem);

  • int link(const char *name);

  • 各オープンの位置は次のとおりです。閉じてリンクを解除する必要がありますが、最後に実行されたリンク解除のみが有効になります

以上がLinuxの各種セマフォを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。