総合手引 | セクション 9 | English | オプション |
#include <sys/types.h>
#include <sys/lock.h>
#include <sys/sema.h>
セマフォは mutex と状態変数で十分であるようなところでは使用するべきでは ありません。 セマフォは mutex と状態変数より複雑な同期の仕組みですので、 そのため効率的ではありません。
セマフォは sema_init() を使用して作成されます。 ここで sema は struct sema のための領域へのポインタで、 value はセマフォの初期値で、 description はそのセマフォを説明するヌルで終端された文字列へのポインタです。 セマフォは sema_destroy() を使用して破壊されます。 セマフォは sema_post() を使用してポスト (インクリメント) されます。 セマフォは sema_wait(), sema_timedwait() または sema_trywait() を使用してウェイト (デクリメント) されます。 sema_timedwait() への timo 引数は失敗して戻る前にウェイトするための tick 単位での最小時間を指定します。 sema_value() はセマフォの現在の値を読み出すために使用されます。
セマフォのデクリメントによりその値が負になった場合には、 sema_trywait() は失敗を示すために 0 を返します。 そうでない場合には、成功を示すために 0 ではない値が返されます。
sema_timedwait() 関数はそのセマフォ上でのウェイトが成功した場合には 0 を返し、 そうでない場合には 0 ではないエラーコードが返されます。
[EWOULDBLOCK] | |
タイムアウトしました。 | |
SEMA (9) | June 14, 2004 |
総合手引 | セクション 9 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Like a classics radio station whose play list spans decades, Unix simultaneously exhibits its mixed and dated heritage. There's Clash-era graphics interfaces; Beatles-era two-letter command names; and systems programs (for example, ps) whose terse and obscure output was designed for slow teletypes; Bing Crosby-era command editing (# and @ are still the default line editing commands), and Scott Joplin-era core dumps. | ” |
— The Unix Haters' handbook |