PR_WaitCondVar¶
等待条件。
语法¶
#include <prcvar.h>
PRStatus PR_WaitCondVar(
PRCondVar *cvar,
PRIntervalTime timeout);
参数¶
PR_WaitCondVar 具有以下参数
cvar
要等待的条件变量。
timeout
值
PR_INTERVAL_NO_TIMEOUT
要求在从等待恢复之前必须通知条件(或中断线程)。值PR_INTERVAL_NO_WAIT
使线程释放锁,可能导致运行时内重新调度,然后立即尝试重新获取锁并恢复。
返回值¶
该函数返回以下值之一
如果成功,则为
PR_SUCCESS
。如果失败(例如,如果调用者未锁定与条件变量关联的锁或线程被 PR_Interrupt 中断),则为
PR_FAILURE
。可以使用 PR_GetError 确定详细信息。
描述¶
在调用 PR_WaitCondVar 之前,调用线程必须持有与条件变量关联的锁。在调用 PR_WaitCondVar 之后,锁被释放,线程被阻塞在“等待条件”状态,直到另一个线程通知条件或调用者指定的超时时间到期。
当条件变量被通知时,等待该条件的线程从“等待条件”状态变为“就绪”状态。当被调度时,线程尝试重新获取在调用 PR_WaitCondVar 时持有的锁。
对于 timeout 参数,任何非 PR_INTERVAL_NO_TIMEOUT
或 PR_INTERVAL_NO_WAIT
的值都将导致线程由于显式通知或指定间隔到期而重新调度。后者必须通过将时间视为受锁保护的监视数据的一部分,并明确测试是否已过期间隔来确定。要检测指定间隔的到期,请在调用 PR_WaitCondVar 之前和之后调用 PR_IntervalNow,并将经过的时间与指定间隔进行比较。