PR_CWait¶
等待监视器状态更改的通知。
语法¶
#include <prcmon.h>
PRStatus PR_CWait(
void *address,
PRIntervalTime timeout);
参数¶
该函数具有以下参数
address
受保护对象的地址 - 与之前传递给 PR_CEnterMonitor 的地址相同。
timeout
线程在被重新调度之前愿意等待显式通知的时间量(以 PRIntervalTime 单位表示)。如果您指定
PR_INTERVAL_NO_TIMEOUT
,则仅当对象被通知时,函数才会返回。
返回值¶
该函数返回以下值之一
PR_SUCCESS 表示已通知受监视的对象,或者超时参数中指定的时间间隔已超过。
PR_FAILURE 表示缓存中找不到监视器,或者已找到监视器但调用线程不是持有监视器互斥锁的线程。
描述¶
使用 address
参数中指定的值在监视器缓存中查找监视器,PR_CWait 等待监视器状态更改的通知。在线程等待期间,它会退出监视器(就像它已多次调用 PR_CExitMonitor 一样,次数与它调用 PR_CEnterMonitor 的次数相同)。等待结束后,线程重新获得对监视器锁的控制权,其入口计数与等待开始之前相同。
当监视器被通知时(假设线程是下一个接收通知的线程)或 timeout
参数中指定的时间间隔已超过时,正在等待监视器的线程恢复执行。线程恢复执行后,调用者有责任测试受监视数据的状态以确定适当的操作。