与 Boost 中的多线程类相比,使用 C++11 多线程类有哪些优点/缺点?我只会使用 Linux,所以我不需要可移植性。其中一个库是否缺少功能?任何已知的限制?更好的语法?
问问题
13847 次
2 回答
4
标准线程具有标准化的优点,因此可移植到任何兼容的实现。
Boost 线程库或多或少是相同的;标准库是基于该库的,并且已经努力使 Boost 成为该标准的一致实现。它有一些可能有用的扩展,包括:
join
有超时- 线程中断
- 线程组
- 额外的锁类型
于 2013-05-27T13:06:10.363 回答
1
通常,boost 类只是给定操作系统中存在的函数/对象的包装器。它们的主要优点是 boost 包含为大多数操作系统编写的版本,因此包装器提供了原始函数/对象有时不具备的可移植性。
如果您对 boost 没有其他需求,我强烈建议您使用标准 C++11 线程。
原因:
升压不会提供超过系统允许
您的代码不会有任何包装器开销(无论它有多小)
对 c++11 线程的 boost 支持是一个新特性,我担心它会在 boosts 的实现中引入一些错误
您将不必依赖 boost 库,并且可以节省编译和链接它们的时间等。
您不必更新 boost,因为您不会使用它
当然,boost 也有一些优点:
很多人都知道 boost 并且代码(可能)会更容易阅读
如果您决定需要移植代码,您可能会更轻松(尽管 C++11 是标准的,因此所有编译器都会在某个地方实现它)
于 2013-05-27T13:05:47.843 回答