与std::mutex相比,其他mutex包装库的优势是什么

What are the advantages of other mutex wrapper libraries over std::mutex?

本文关键字:mutex 是什么 其他 std 相比 包装      更新时间:2023-10-16

C++标准库提供std::mutex (lock, unlock, try_lock)功能,可以在多线程环境中工作。

此外,我还听到过关于包装器库(例如Boost::mutex)的讨论,据我所见,它们提供了相同的功能(lock, unlock, try_lock)。

我的问题是,与标准的包装器库相比,使用这种包装器库有什么优势?

std::mutexstd::thread和线程库的其他元素仅在C++11中可用。boost::mutex等早于C++11。因此,优势在于,如果您没有C++11支持,就可以使用它们。

虽然juancapanza注意到了问题(+1)的最直接答案,但std::mutex在它们包装的类型上引入的一件事是使用异常。对于大多数人/环境/需求来说,这将被认为是一件好事。在某些情况下,您可能不想要异常依赖性。在这种情况/环境下,std::mutex接口可能不是一种选择或所需的。

一些包装器,如TBB和PPL,提供了比标准库多得多的功能。

  1. 自己使用pthreads/CreateThread=编写自己的malloc
  2. 使用CCD_ 10=CCD_ 11/CCD_
  3. 使用TBB/PPL=std::vector/std::unique_ptr