recursive_mutex的最大拥有级别的下限

Lower bound for the maximum level of ownership for recursive_mutex?

本文关键字:拥有 mutex recursive      更新时间:2023-10-16

报价[线程.互斥.递归]:

拥有recursive_mutex对象的线程可以通过对该对象调用lock()try_lock()来获得额外级别的所有权。单个线程可以获得多少级别的所有权,这一点尚不明确。如果线程已经获得了recursive_mutex对象的最大所有权级别,则对try_lock()的额外调用将失败,对lock()的额外调用会引发类型为system_error的异常。

"所有权的最大级别"是否存在大于1的下限?递归pthread互斥锁呢?

标准中没有指定下限。这可能是故意的。

旧的标准(我认为是C)确实为类似的事情提供了较低的限制。结果是,人们编写了编码标准,规定你不能使用超过这些下限的代码。例如:它曾经(我认为现在仍然是)实现定义了在比较平等时,外部符号的多少字符是重要的。因此CCD_ 8和CCD_。最小长度规定为8,编码标准规定"外部符号的最大长度为8个字符"。

关于这个值的合理下界:我可以很容易地想象,计数可能会被比特打包到其他字段中,这样整个过程就可以用合适的指令进行原子更新。因此,它可能比32位小很多。(它实际上只需要足够大,就可以达到最大的调用堆栈深度,所以在受约束的环境中,31可能就足够了。)