gpt4 book ai didi

c++ - 关于 boost::recursive_mutex,boost::thread_group 中的所有线程是否共享同一个线程

转载 作者:行者123 更新时间:2023-11-30 05:48:08 25 4
gpt4 key购买 nike

我怀疑基于我的代码的行为,如果我有一个 boost::thread_group 访问一个受 boost::recursive_mutex 保护的对象,那么互斥锁不会阻止组内的线程同时进入 protected 区域。

这令人困惑,因为我看到调试器 (xcode) 中列出的所有线程。

这是一个已知问题吗?我找不到任何关于它的文档。

最佳答案

boost thread_group 是一组线程。

根据定义,所有线程都是独特的。


因此,如果您的互斥体无法...“mut-ex”(相互排除),则表明其他地方出现了程序员错误。

一时兴起,我建议您对互斥锁(递归或非递归)的期望可能不准确(与线程组的期望类似)?

您可能错过的是,访问共享对象的所有方/必须/在这些访问的所有时间都获取互斥量。让一个线程“保护”共享对象以神奇地将其他线程拒之门外是不够的。

互斥锁是一个合作命题。在这方面,术语“关键部分”实际上更好一些:您“标记”代码中的关键部分,而不是“标记”关键数据(无论是什么)。

关于c++ - 关于 boost::recursive_mutex,boost::thread_group 中的所有线程是否共享同一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28332530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com