| 総合手引 | セクション 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.
| “ | A typical Unix /bin or /usr/bin directory contains a hundred different kinds of programs, written by dozens of egotistical programmers, each with its own syntax, operating paradigm, rules of use ... strategies for specifying options, and different sets of constraints. | ” |
| — The Unix Haters' handbook | ||