PR_CEnterMonitor

进入与缓存的监视器关联的锁。

语法

#include <prcmon.h>

PRMonitor* PR_CEnterMonitor(void *address);

参数

该函数具有以下参数

address

对要由监视器保护的数据的引用。只要正在执行监视操作,此引用必须保持有效。

返回值

该函数返回以下值之一

  • 如果成功,则函数返回指向与 address 参数中指定的值关联的 PRMonitor 的指针。

  • 如果失败(监视器缓存需要扩展并且系统内存不足),则函数返回 NULL

描述

PR_CEnterMonitor 使用 address 参数中指定的值在监视器缓存中查找监视器,然后进入与监视器关联的锁。如果找不到匹配项,则将可用的监视器与地址关联,并将监视器的条目计数递增(因此其值为 1)。如果找到匹配项,则调用线程要么已在监视器中(这是一个重入调用),要么另一个线程正在持有监视器的互斥锁。在前一种情况下,条目计数仅递增,函数返回。在后一种情况下,调用线程可能会发现监视器被另一个线程锁定,并等待该线程退出后再继续。

注意

PR_CEnterMonitorPR_CExitMonitor 必须配对,也就是说,每个进入都必须有一个退出,否则对象将永远不会对任何其他线程可用。