総合手引 | セクション 9 | English | オプション |
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/condvar.h>
スレッドは cv_wait(), cv_wait_sig(), cv_timedwait() または cv_timedwait_sig() の呼び出しの前に mp を保持しなければなしません。 スレッドがある状態でウェイトするときに、 mp はそのスレッドがブロックされる前に不可分に開放され、それから その関数呼び出しが戻る前に不可分に再獲得されます。 全てのウェイトするものは cvp と連携している同一の mp を渡さなければなりません。 スレッドは cv_signal(), cv_broadcast() または cv_broadcastpri() を呼び出している間は、たとえ引数として渡していないとしても、 mp を保持しなければなりません。
cv_wait(), cv_wait_sig(), cv_timedwait() および cv_timedwait_sig() のブロックが解除された時に、これらの呼び出しスレッドが実行可能にされます。 cv_timedwait() および cv_timedwait_sig() はブロックが解除され EWOULDBLOCK を返す前に最長 timo / HZ 秒間ウェイトします。 そうでなければ、0 を返します。 cv_wait_sig() および cv_timedwait_sig() は、シグナルがとらえられた場合には未完のまま EINTR または ERESTART の値で戻ります。 または、 cv_signal() または cv_broadcast() で通知を受けた場合には 0 の値で戻ります。
cv_wmesg() は cv_init() に渡された説明文字列を返します。
[EINTR] | |
マスクされていないシグナルがつかまりました。 | |
[ERESTART] | |
マスクされているシグナルがつかまりました。 | |
cv_timedwait() および cv_timedwait_sig() は以下の場合に失敗します。
[EWOULDBLOCK] | |
タイムアウトが満了しました。 | |
CONDVAR (9) | December 11, 2000 |
総合手引 | セクション 9 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.