最佳实践:我应该使用 std::thread、Boost 还是本机调用?

Best practice: should I use std::thread, Boost, or native calls?

使用什么最佳实践:std::thread、本机调用或某些库? std::thread 是一种“不实际使用”的便利,还是应该在需要线程时使用它?在 c++11 出现之前,看起来某些线程库最适合可移植性,但现在 std::thread 是一回事...

现在在重大项目中应该使用什么 - 就行业标准而言?

经验法则:

  • 如果某个东西已经在标准库中超过 X 年,请使用它,除非您知道它不适合您的需要。
  • 如果某些东西在标准库中存在 <= X 年,而您正在编写 non-critical 代码:与以前相同 - 使用它。
  • 否则:

    • 寻找它是如何进入标准库的(通常是:Boost);
    • 四处寻找提及他们两人的讨论、作者的帖子等;
    • 地图特征集/设计决策差异;
    • 如果您仍然没有足够的信息来做出决定,请在这里提问。

对于您的情况,请参阅:

C++ 11 Thread vs Boost Thread is there any difference?

您会注意到 Boost 线程有一些标准中没有的功能。如果您需要这些,请使用 Boost 线程,否则使用 std::thread.

没有一个答案可以一统天下。

TL;DR 这取决于

如果您想要最佳性能(可能是您使用 c++ 的原因之一)使用本地调用。您拥有完全的控制权,并且没有包装器 类 和检查的开销。

如果您需要可移植性并且支持c++11std中的实现是一个很好的选择选择。大多数情况下,此选项最容易入手,并且可用资源最多。

目前 boost 复制了标准的功能。但如果 编译器不支持 c++11,它仍然是可行的选择。在最近的几次修订中,相同的增强功能直接复制到标准中。(例如智能指针)