Php/docs/function.sem-get

提供:Dev Guides
< Php
移動先:案内検索

sem_get

(PHP 4, PHP 5, PHP 7)

sem_getセマフォ ID を得る


説明

sem_get ( int $key [, int $max_acquire = 1 [, int $permissions = 0666 [, bool $auto_release = true ]]] ) : SysvSemaphore|false

sem_get() は、 System V セマフォを指定したキーでアクセスするために使用可能な ID を返します。

同じキーで sem_get() を 2 度コールした場合、 別のセマフォ ID が返されます。 しかし、どちらの ID も同じそのセマフォをアクセスします。

key0 を指定すると、 sem_get() が呼び出される度に新しい非公開のセマフォが作られます。


パラメータ

key
max_acquire
同時にセマフォを得ることが可能なプロセス数を max_acquire にセットします。
permissions
セマフォのパーミッション。 実際には、この値はプロセスが現在そのセマフォに付随している 唯一のプロセスであることがわかった場合にのみセットされます。
auto_release
リクエストの終了時に自動的にセマフォを開放するかどうかを指定します。


返り値

成功した場合に正のセマフォ ID、エラー時には false を返します。


変更履歴

バージョン 説明
8.0.0 成功した時、

この関数は SysvSemaphore クラスのインスタンスを返すようになりました。 期待するようになりました。 これより前のバージョンでは、リソースが返されていました。

8.0.0 auto_release の型が

int から bool に変更されました


注意

警告 PHP 以外のところで作られたセマフォに sem_get() でアクセスするときには、 3 つのセマフォのセットとして作ったものでなければいけないことに注意しましょう (たとえば、C の semget() 関数で作るなら、nsems に 3 を指定します)。 そうしないと、PHP からそのセマフォにアクセスできなくなります。


参考

  • sem_acquire() - セマフォを得る
  • sem_release() - セマフォを解放する
  • ftok() - パス名とプロジェクト ID を、System V IPC キーに変換する