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