recursive_mutex的最大拥有级别的下限
Lower bound for the maximum level of ownership for recursive_mutex?
报价[线程.互斥.递归]:
拥有
recursive_mutex
对象的线程可以通过对该对象调用lock()
或try_lock()
来获得额外级别的所有权。单个线程可以获得多少级别的所有权,这一点尚不明确。如果线程已经获得了recursive_mutex
对象的最大所有权级别,则对try_lock()
的额外调用将失败,对lock()
的额外调用会引发类型为system_error
的异常。
"所有权的最大级别"是否存在大于1的下限?递归pthread互斥锁呢?
标准中没有指定下限。这可能是故意的。
旧的标准(我认为是C)确实为类似的事情提供了较低的限制。结果是,人们编写了编码标准,规定你不能使用超过这些下限的代码。例如:它曾经(我认为现在仍然是)实现定义了在比较平等时,外部符号的多少字符是重要的。因此CCD_ 8和CCD_。最小长度规定为8,编码标准规定"外部符号的最大长度为8个字符"。
关于这个值的合理下界:我可以很容易地想象,计数可能会被比特打包到其他字段中,这样整个过程就可以用合适的指令进行原子更新。因此,它可能比32位小很多。(它实际上只需要足够大,就可以达到最大的调用堆栈深度,所以在受约束的环境中,31可能就足够了。)
相关文章:
- 在 c++ 中拥有一组结构的正确方法是什么?
- 我应该如何表示我拥有的连续元素序列?
- 如何在没有死锁和/或争用的情况下正确使用 std::mutex C++?
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- 现代 C++ 中作为类成员的非拥有指针
- 结构包含在两个头文件中,这两个文件我都不拥有
- 在函数中拥有函数原型的目的是什么?
- condition_variable、引用和线程:谁拥有锁?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- std::mutex 如何防止线程修改?
- 有没有办法在 c++ 中拥有条件预处理器
- 为什么我不能拥有某些私有会员功能?
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 是否需要 mutex() 来安全地同时访问具有 2 个线程的数组的不同元素?
- 如何拥有受约束的运算符模板?
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- std::atomic 和 std::mutex 的相对性能
- CBasePin 递增对拥有过滤器的引用.循环引用?
- 谁拥有作为指向 Windows API 函数的指针传递的值?
- 如何解决"'mutex' in namespace 'std' does not name a type"?