【问题标题】:how can I temporarily pause other threads using boost::thread?如何使用 boost::thread 暂时暂停其他线程?
【发布时间】:2011-03-08 21:05:16
【问题描述】:

我有一个有 2 个线程(A 和 B)的程序。是否可以在线程 B 中定义一个代码块,一旦进入该代码块就会暂停线程 A,直到该块执行完毕?

我正在使用 C++ 和库 boost::thread 1.44

编辑:我遇到的问题是我无法访问线程 A 中的代码,因为它是一个非线程安全库,所以我无法控制它何时访问我的共享资源。我对我的代码进行了一些架构更改,现在资源不再共享,问题得到解决。

【问题讨论】:

  • 如果线程 A 持有线程 B 所需的锁怎么办?
  • @Mike daniels,好点子!我重新设计了我的代码,所以我可以使用互斥锁

标签: c++ multithreading boost boost-thread


【解决方案1】:

这称为锁定,在 boost 中你会想要使用 scoped_lock

查看此页面:scoped_lock

【讨论】:

    【解决方案2】:

    除了 Grammin 的 scoped_lock/mutex 解决方案之外,您还可以使用 condition variable(对于您的问题可能更常见的成语)甚至是 barrier

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 2021-09-12
      • 2018-05-02
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      相关资源
      最近更新 更多