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_TIMEOUTPR_INTERVAL_NO_WAIT 的值都将导致线程由于显式通知或指定间隔到期而重新调度。后者必须通过将时间视为受锁保护的监视数据的一部分,并明确测试是否已过期间隔来确定。要检测指定间隔的到期,请在调用 PR_WaitCondVar 之前和之后调用 PR_IntervalNow,并将经过的时间与指定间隔进行比较。