簡體   English   中英

Boost的scute mutex和WinAPi的關鍵部分之間有區別嗎?

[英]Is there a difference between Boost's scoped mutex and WinAPi's critical section?

在Windows環境中,使用WinAPI的關鍵部分或其他東西是Boost的作用域互斥體嗎?

當前版本的boost::mutex既不使用Win32 CRITICAL_SECTION ,也不使用Win32 Mutex。 相反,它使用原子操作和Win32事件來阻止等待。

舊版本(boost 1.34.1和之前版本)是Windows上CRITICAL_SECTION的包裝器。

順便說一句,互斥鎖本身沒有作用域。 boost::mutex::scoped_lock類型,在最近的版本中, boost::lock_guard<boost::mutex>boost::unique_lock<boost::mutex>提供用於鎖定互斥鎖的RAII包裝器,以確保您不會忘記解鎖它。

boost::lock_guard<>boost::unique_lock<>模板適用於任何具有lock()unlock()成員函數的類型,因此如果需要,您可以將它們與進程間互斥鎖一起使用。

Win32的CRITICAL_SECTION只能在單個進程的線程中使用 如果需要在進程之間使用某些東西,則需要使用互斥鎖。 Boost沒有說明關鍵部分,所以我認為它是使用互斥鎖。

“scoped”只是意味着它有一個包裝器,它使用RAII在特定范圍的末尾自動解鎖互斥鎖。

暫無
暫無

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

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