可以'互斥'在两个以上的线程之间使用boost来进行互斥吗?

时间:2015-07-29 10:55:19

标签: c++ multithreading boost mutex

下面是两个线程之间互斥的Boost示例:

mutex m;

thread1:
   m.lock();
  ... /* A */
  m.unlock();

thread2:
  m.lock();
  ... /* B */
  m.unlock();

我的问题是上述代码是否可用于解决两个以上线程之间的冲突?在我看来,它只提供两个线程之间的互斥。

如果上述方法不起作用,如何在两个以上的线程中互斥?

1 个答案:

答案 0 :(得分:2)

是的,您可以在任意数量的线程中使用它。

但是,我建议您使用std::mutexstd::lock_guard

std::mutex m;

//thread1:
    {
        std::lock_guard<std::mutex> lg(m); //<-- Automatically locks m upon construction of lg
            //... /* A */
    } //<- automatically unlocks m at the end of lg's life time

//thread2:
    {
        std::lock_guard<std::mutex> lg(m);
        //... /* B */
    }

//thread3:
    {
        std::lock_guard<std::mutex> lg(m);
            //... /* C */
    }