在阅读了关于如何不使用volatile来标记正在运行的线程退出的各种答案之后(以及使用boost:atomic<>
的建议)我仍然找不到如何使用boost而不使用C来正确执行此操作的答案++ 11
boost::mutex
吗?m_stopThread
变量,我将其更改为true,并在我的运行循环中检查它?boost::mutex
锁定调用是为了调用操作系统,还是只使用内存屏障指令等更轻??答案 0 :(得分:0)
我认为在测试之前设置和读取内存屏障之后,只需要调用一些东西来发出写入屏障。它可能是原子操作,互斥访问或其他任何东西。 (我想即使进入不同的互斥体也会好的:) 如果你不赶时间,你可能什么也不做,因为将来应该发布正确的屏障指令(至少在发生硬件中断时)。 当然,m_stopThread应该声明为volatile
(虽然我从Stadard的观点来看可能是错的)