默认情况下,CRITICAL_SECTION 对象是递归的。是否可以像 pthread 互斥锁一样配置此行为以启用或禁用递归线程访问?
为了回应评论澄清:我专门指的是 Windows CRITICAL_SECTION 对象,而不是 Windows 互斥体。
默认情况下,CRITICAL_SECTION 对象是递归的。是否可以像 pthread 互斥锁一样配置此行为以启用或禁用递归线程访问?
为了回应评论澄清:我专门指的是 Windows CRITICAL_SECTION 对象,而不是 Windows 互斥体。
不,它不能。记录在案的 API 没有以任何方式提及这一点。Windows 临界区总是接受递归访问。
临界区总是允许线程内的递归。互斥体也是如此。这是设计使然,无法更改。
另一方面,信号量可以防止线程内的递归。有关详细信息,请参阅MSDN 文档。