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

前端 未结 2 1639
灰色年华
灰色年华 2020-12-09 12:36

In Windows environment, is Boost\'s scoped mutex using WinAPI\'s critical sections, or something else?

2条回答
  •  余生分开走
    2020-12-09 13:39

    The current version of boost::mutex uses neither a Win32 CRITICAL_SECTION, nor a Win32 Mutex. Instead, it uses atomic operations and a Win32 Event for blocking waits.

    Older versions (boost 1.34.1 and prior) were a wrapper around CRITICAL_SECTION on Windows.

    Incidentally, the mutex itself is not scoped. The boost::mutex::scoped_lock type and, in recent versions, boost::lock_guard and boost::unique_lock provide RAII wrappers for locking a mutex to ensure you don't forget to unlock it.

    The boost::lock_guard<> and boost::unique_lock<> templates work with any type with lock() and unlock() member functions, so you can use them with inter-process mutexes if desired.

提交回复
热议问题