C++ 11 Thread vs Boost Thread有什么区别吗?

use*_*112 11 c++ boost c++11

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

Dar*_*usz 1

一般来说,boost 类只是给定操作系统中存在的函数/对象的包装器。它们的主要优点是 boost 包含为大多数操作系统编写的版本,因此包装器提供了原始函数/对象有时不提供的可移植性。

如果您对 boost 没有其他需求,我强烈建议使用标准 C++11 线程。

理由:

  • boost 不会提供超出系统允许的范围

  • 您的代码不会有任何包装器开销(无论它有多小)

  • boost 对 c++11 线程的支持是一个新功能,我担心它可能会在 boosts 的实现中引入一些错误

  • 您不必依赖 boost 库,并且可以节省编译和链接它们等的时间。

  • 您不必更新 boost,因为您不会使用它

当然,boost也有一些优点:

  • 很多人都知道 boost 并且代码(可能)会更容易阅读

  • 如果您决定需要移植代码,您可能会更容易(尽管 C++11 是标准的,因此所有编译器都会实现它)