Boost的scute mutex和WinAPi的关键部分之间有区别吗?

nha*_*123 9 c++ multithreading boost mutex critical-section

在Windows环境中,使用WinAPI的关键部分或其他东西是Boost的作用域互斥体吗?

Ant*_*ams 20

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

旧版本(boost 1.34.1和之前版本)是CRITICAL_SECTIONWindows上的一个包装器.

顺便说一句,互斥锁本身没有作用域.的boost::mutex::scoped_lock类型,并在最新版本,boost::lock_guard<boost::mutex>boost::unique_lock<boost::mutex>锁定一个互斥体,以确保您不要忘记解锁提供RAII包装.

boost::lock_guard<>boost::unique_lock<>与任何类型的使用模板lock()unlock()成员函数,所以你可以根据需要使用进程间的互斥使用它们.

  • @gbjbaanb你有时间吗?请注意,"boost :: mutex"仅在存在争用时才使用该事件 - "快速路径"仅使用原子操作. (4认同)