2017-10-06 59 views
0

我多线程程序具有使能状态和concurently排队,所以我会用互斥方法像波纹管C++可变的互斥

{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); 
    ... 
} 

感谢的

+0

请提供[mcve] –

回答

0

是的,你应该。 A lock_guard依靠RAII来锁定和解锁互斥锁 - 当它超出范围时,互斥锁会自动释放。如果你使lock_guard成为一个成员变量,使用它将是毫无意义的。您应该在最接近受保护代码的范围内定义lock_guard - 在您真正需要该锁之前对其进行初始化,并在完成互斥体后立即将其删除。