C ++标准库提供std::mutex (lock, unlock, try_lock)
功能,可以在多线程环境中工作。
此外,我听说过有关包装库(例如Boost::mutex
)的讨论,从我可以看到,它提供了相同的功能(lock, unlock, try_lock
)。
我的问题是,使用这种包装库比标准库有什么优势?
答案 0 :(得分:9)
std::mutex
,std::thread
和线程库的其他元素仅适用于C ++ 11。 boost::mutex
等早于C ++ 11。因此,如果您没有C ++ 11支持,则可以使用它们。
答案 1 :(得分:2)
虽然juanchopanza注意到问题(+1)的最直接答案,但std::mutex
介绍对其包装的类型的一件事是使用例外。对于大多数人/环境/需求,这将被视为一件好事。在某些情况下,您可能不希望异常依赖。在这种情况下/环境中,std::mutex
接口可能不是一个选项或可取的。
答案 2 :(得分:2)
有些包装器,如TBB和PPL,提供的功能远远超过标准库。
malloc
。std::thread
= malloc
/ free
。std::vector
/ std::unique_ptr
。