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 参数中指定的时间间隔已超过时,正在等待监视器的线程恢复执行。线程恢复执行后,调用者有责任测试受监视数据的状态以确定适当的操作。