総合手引 | セクション 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.
“ | "I liken starting one's computing career with Unix, say as an undergraduate, to being born in East Africa. It is intolerably hot, your body is covered with lice and flies, you are malnourished and you suffer from numerous curable diseases. But, as far as young East Africans can tell, this is simply the natural condition and they live within it. By the time they find out differently, it is too late. They already think that the writing of shell scripts is a natural act." | ” |
— Ken Pier, Xerox PARC |