マルチスレッドのプログラミング

セマフォの値によるブロック

sem_wait(3RT)


プロトタイプ:
int	sem_wait(sem_t *sem);

#include <semaphore.h>

sem_t sem;
int ret;

ret = sem_wait(&sem); /* セマフォの値の変化を待つ */

sema_wait(3THR) は、sem が指すセマフォの値が 0 より大きくなるまで呼び出しスレッドをブロックし、0 より大きくなったらセマフォの値を不可分操作によって 1 減らします。

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下のいずれかの条件が検出されると、この関数は失敗し、対応する値を返します。


EINVAL

sem が指すアドレスが正しくありません。


EINTR

この関数にシグナルが割り込みを行いました。