array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.sem-get.php', 1 => 'sem_get', ), 'up' => array ( 0 => 'ref.sem.php', 1 => 'セマフォ関数', ), 'prev' => array ( 0 => 'function.sem-acquire.php', 1 => 'sem_acquire', ), 'next' => array ( 0 => 'function.sem-release.php', 1 => 'sem_release', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/sem/functions/sem-get.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
sem_get — セマフォ ID を得る
$key
,$max_acquire
= 1,$permissions
= 0666,$auto_release
= true
sem_get() は、 System V セマフォを指定したキーでアクセスするために使用可能な ID を返します。
同じキーで sem_get() を 2 度コールした場合、 別のセマフォ ID が返されます。 しかし、どちらの ID も同じそのセマフォをアクセスします。
key
に 0
を指定すると、
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 からそのセマフォにアクセスできなくなります。