【发布时间】:2013-05-22 08:15:28
【问题描述】:
使用 C++11 多线程类与 Boost 中的多线程类相比有哪些优点/缺点?我只会使用 Linux,所以我不需要可移植性。其中一个库是否缺少功能?任何已知的限制?更好的语法?
【问题讨论】:
-
@itwasntpete 实际上,在过去的 2 年中,Boost.Thread 发生了很多变化。
使用 C++11 多线程类与 Boost 中的多线程类相比有哪些优点/缺点?我只会使用 Linux,所以我不需要可移植性。其中一个库是否缺少功能?任何已知的限制?更好的语法?
【问题讨论】:
标准线程具有标准化的优势,因此可移植到任何兼容的实现中。
Boost 线程库或多或少是相同的;标准库是基于该库的,并且已经努力使 Boost 成为该标准的一致实现。它有一些可能有用的扩展,包括:
join 超时【讨论】:
通常,boost 类只是给定操作系统中存在的函数/对象的包装器。它们的主要优点是 boost 包含为大多数操作系统编写的版本,因此包装器提供了原始函数/对象有时不具备的可移植性。
如果您对 boost 没有其他需求,我强烈建议您使用标准 C++11 线程。
原因:
boost 不会提供超出系统允许的范围
您的代码不会有任何包装器开销(无论它有多小)
对 c++11 线程的增强支持是一项新功能,我担心它会在增强的实现中引入一些错误
您不必依赖 boost 库,并且可以节省编译和链接它们等的时间。
您不必更新 boost,因为您不会使用它
当然,boost 也有一些优点:
很多人都知道 boost,代码会(可能)更容易阅读
如果您决定需要移植代码,您可能会更轻松(尽管 C++11 是标准的,因此所有编译器都会在某个地方实现它)
【讨论】: