簡體   English   中英

C ++可變互斥體

[英]C++ Mutable Mutex

我有啟用狀態和隊列一致的多線程程序,所以我將使用波紋管之類的互斥方法

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

謝謝

是的你應該。 lock_guard依靠RAII來鎖定和解鎖互斥鎖-當互斥鎖超出范圍時,該互斥鎖會自動釋放。 如果將lock_guard為成員變量,則使用它將毫無意義。 您應該在范圍內定義盡可能接近受保護代碼的lock_guard在實際需要鎖之前立即對其進行初始化,並在完成互斥鎖后立即將其移出范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM