PR_CEnterMonitor¶
进入与缓存的监视器关联的锁。
语法¶
#include <prcmon.h>
PRMonitor* PR_CEnterMonitor(void *address);
参数¶
该函数具有以下参数
address
对要由监视器保护的数据的引用。只要正在执行监视操作,此引用必须保持有效。
返回值¶
该函数返回以下值之一
如果成功,则函数返回指向与
address
参数中指定的值关联的 PRMonitor 的指针。如果失败(监视器缓存需要扩展并且系统内存不足),则函数返回
NULL
。
描述¶
PR_CEnterMonitor 使用 address
参数中指定的值在监视器缓存中查找监视器,然后进入与监视器关联的锁。如果找不到匹配项,则将可用的监视器与地址关联,并将监视器的条目计数递增(因此其值为 1)。如果找到匹配项,则调用线程要么已在监视器中(这是一个重入调用),要么另一个线程正在持有监视器的互斥锁。在前一种情况下,条目计数仅递增,函数返回。在后一种情况下,调用线程可能会发现监视器被另一个线程锁定,并等待该线程退出后再继续。
注意
PR_CEnterMonitor 和 PR_CExitMonitor 必须配对,也就是说,每个进入都必须有一个退出,否则对象将永远不会对任何其他线程可用。