拥有一个对象的线程可以
recursive_mutex
通过调用该对象来获得额外的所有权级别。未指定单个线程可以获得多少级别的所有权。如果一个线程已经获得了一个对象的最大所有权,额外的调用将会失败,额外的调用将会抛出一个类型的异常。lock()
try_lock()
recursive_mutex
try_lock()
lock()
system_error
“最大拥有权”是否存在大于 1 的下限?递归 pthread 互斥锁呢?
拥有一个对象的线程可以
recursive_mutex
通过调用该对象来获得额外的所有权级别。未指定单个线程可以获得多少级别的所有权。如果一个线程已经获得了一个对象的最大所有权,额外的调用将会失败,额外的调用将会抛出一个类型的异常。lock()
try_lock()
recursive_mutex
try_lock()
lock()
system_error
“最大拥有权”是否存在大于 1 的下限?递归 pthread 互斥锁呢?
标准中没有规定下限。这可能是故意的。
较旧的标准(CI 认为)确实用于为此类事情提供较低的限制。结果是人们编写的编码标准说你不能使用超过这些下限。例如:它是(我认为仍然是)实现定义了在比较相等性时外部符号的多少个字符是重要的。所以a_very_very_long_name_indeed_with_extra_padding
和a_very_very_long_name_indeed_with_extra_paddingX
可能被视为相同的符号。最小长度指定为 8,并且编写了编码标准,指定“外部符号的最大长度为 8 个字符”。
关于这个值的合理下限:我可以很容易地想象计数可能会被打包到其他一些字段中,以便可以使用合适的指令自动更新整个事物。因此,它可能小于 32 位。(它只需要足够大以实现最大调用堆栈深度,因此在受限环境中,31 可能就足够了。)