cond_timedwait(3C) 与 cond_wait() 非常相似,区别在于 cond_timedwait() 经过 abstime 指定的时间之后不会阻塞。对于 POSIX 线程,请参见pthread_cond_timedwait 语法。
#include <thread.h> int cond_timedwait(cond_t *cv, mutex_t *mp, timestruct_t abstime);
cond_timedwait() 每次返回时,互斥锁均会锁定并由调用线程拥有,即使返回错误时也是如此。
cond_timedwait() 函数会一直阻塞,直到该条件获得信号,或者经过最后一个参数所指定的时间为止。超时以具体的时间指定,这样即可在不重新计算超时值的情况下高效地重新测试条件。
cond_timedwait() 在成功运行后返回 0。如果检测到以下任一情况,cond_timedwait() 将失败并返回对应的值。
EFAULT
描述:cv 指向的地址非法。
ETIME
描述:由 abstime 指定的时间已过期。
EINVAL
描述:abstime 无效。