総合手引 | セクション 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.
“ | If you are angry with someone, you should walk a mile in their shoes - then you'll be a mile away from them, and you'll have their shoes. | ” |