【发布时间】:2012-10-29 07:46:44
【问题描述】:
默认情况下,CRITICAL_SECTION 对象是递归的。能否像 pthread 互斥锁一样配置此行为以启用或禁用递归线程访问?
为了澄清对 cmets 的回应:我专门指的是 Windows CRITICAL_SECTION 对象,而不是 Windows 互斥体。
【问题讨论】:
-
递归是指它有一个计数器(就像智能指针中的引用计数器)?
-
@AlexFarber,互斥锁与临界区不同。
-
重点是,如果不想要递归锁,就需要使用互斥锁
-
不清楚你的目标是什么;例如,您是否试图检测尝试递归使用以将其标记为(潜在)错误?您可以添加自己的代码来为您自己的代码拥有的 critsect 执行此操作,方法是将每个代码与“正在使用”布尔值配对;或者对于仅调试代码,您可以dig into the critical section internals 检查其状态。