什么是正确的方法来标记线程退出使用boost而不使用c ++ 11

时间:2012-02-08 11:31:10

标签: c++ multithreading boost mutex

在阅读了关于如何不使用volatile来标记正在运行的线程退出的各种答案之后(以及使用boost:atomic<>的建议)我仍然找不到如何使用boost而不使用C来正确执行此操作的答案++ 11

  1. 我应该使用boost::mutex吗?
  2. 如果是这样,我是否需要锁定我的m_stopThread变量,我将其更改为true,并在我的运行循环中检查它?
  3. boost::mutex锁定调用是为了调用操作系统,还是只使用内存屏障指令等更轻??

1 个答案:

答案 0 :(得分:0)

我认为在测试之前设置和读取内存屏障之后,只需要调用一些东西来发出写入屏障。它可能是原子操作,互斥访问或其他任何东西。 (我想即使进入不同的互斥体也会好的:) 如果你不赶时间,你可能什么也不做,因为将来应该发布正确的屏障指令(至少在发生硬件中断时)。 当然,m_stopThread应该声明为volatile

(虽然我从Stadard的观点来看可能是错的)