6

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

此外,我还听说过有关Boost::mutex提供相同功能的包装库(例如)的讨论(例如lock, unlock, try_lock)。

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

4

3 回答 3

9

std::mutexstd::thread而线程库的其他元素仅在 C++11 中可用。boost::mutex等人早于 C++11。所以优点是如果你没有 C++11 支持,你可以使用它们。

于 2012-08-26T14:54:44.617 回答
2

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

于 2012-08-26T15:12:42.727 回答
2

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

  1. 自己使用 pthreads/CreateThread = 编写自己的malloc.
  2. 使用std::thread= malloc/ free
  3. 使用 TBB/PPL = std::vector/ std::unique_ptr
于 2012-08-26T15:15:08.657 回答