C ++ Mutable Mutex

时间:2017-10-06 04:16:57

标签: c++ multithreading c++11

我有多线程程序,启用状态和队列很齐全,所以我将使用像下面这样的互斥方法

{std::lock_guard<std::mutex> lock_en(eventLogMutex);en = enable;}

我的问题,我应该使用不同的互斥锁保护来启用和队列,比如

{
  std::lock_guard<std::mutex> lock_queue(eventLogMutex);
  ....
}

{
  std::lock_guard<std::mutex> lock_en(eventLogMutex);
  ...
}

感谢的

1 个答案:

答案 0 :(得分:0)

是的,你应该。 lock_guard依赖RAII来锁定和解锁互斥锁 - 当它超出范围时,互斥锁会自动释放。如果将lock_guard作为成员变量,使用它将毫无意义。您应该尽可能将范围中的lock_guard定义为最接近受保护代码 - 在实际需要锁定之前对其进行初始化,并在完成互斥锁后立即将其超出范围。