11

与 Boost 中的多线程类相比,使用 C++11 多线程类有哪些优点/缺点?我只会使用 Linux,所以我不需要可移植性。其中一个库是否缺少功能?任何已知的限制?更好的语法?

4

2 回答 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 回答