多线程编程指南

等待条件

使用 cond_wait(3C) 可以原子方式释放 mp 所指向的互斥锁,并导致调用线程基于 cv 所指向的条件变量阻塞。阻塞的线程可以由 cond_signal()cond_broadcast() 唤醒,也可以在信号传送或 fork() 将其中断时唤醒。

cond_wait() 每次返回时,互斥锁均处于锁定状态并由调用线程拥有,即使返回错误时也是如此。

cond_wait 语法

#include <thread.h>



int cond_wait(cond_t *cv, mutex_t *mp);

cond_wait 返回值

cond_wait() 在成功运行后返回 0。如果检测到以下任一情况,cond_wait() 将失败并返回对应的值。


EFAULT

描述:

cv 指向的地址非法。


EBUSY

描述:

等待过程已被信号或 fork() 中断。