与std :: mutex相比,其他互斥包装程序库有哪些优点?

时间:2012-08-26 14:48:24

标签: c++ multithreading locking mutex standard-library

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

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

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

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

虽然juanchopanza注意到问题(+1)的最直接答案,但std::mutex 介绍对其包装的类型的一件事是使用例外。对于大多数人/环境/需求,这将被视为一件好事。在某些情况下,您可能不希望异常依赖。在这种情况下/环境中,std::mutex接口可能不是一个选项或可取的。

答案 2 :(得分:2)

有些包装器,如TBB和PPL,提供的功能远远超过标准库。

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