2017-10-06 92 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 - 在您真正需要該鎖之前對其進行初始化,並在完成互斥體後立即將其刪除。