C++ std::mutex 和 windows CreateMutex 有什么区别



I'm programming on c++ (Visual Studio)我可以使用 std::mutex 或 CreateMutex 创建互斥锁。它们之间有什么区别?我应该更喜欢哪一个,哪一个更快?他们在使用或暗示方面有任何细节吗?或者也许std::mutex只是一个shell,并在内部使用CreateMutex?

除了 std::mutex 是跨平台的,而 CreateMutex 不是另一个区别之外,WinAPI 互斥体(通过 CreateMutex 创建)可用于不同进程之间的同步,而 std::mutex 不能用于此目的。从这个意义上说,std::mutex 更等于 WinAPI 关键部分。

但是,还有其他事情需要考虑,例如,如果您需要与 std::condition_variable 或 WinAPI 事件进行互操作(例如,为了使用 WaitForMultipleObjects)。

>std::mutex由C++标准库提供,是的,它很可能会在引擎盖下调用CreateMutex

由于CreateMutex不是便携式的,因此通常首选std::mutex

行为上的区别在于,在Windows下CreateMutex会创建递归互斥锁,而std::mutex是非递归互斥锁。您必须使用C++11 中也添加的std::recursive_mutex

最新更新