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



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

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

经验法则:

  • 如果某些内容已在标准库中存在了> X 年,请使用它,除非您知道它不符合您的需求。
  • 如果某些东西已经在标准库中存在了 <= X 年,并且您正在编写非关键代码:和以前一样 - 使用它。
  • 否则:

    • 寻找它是如何进入标准库的(通常是:Boost(;
    • 窥探讨论提到他们俩,作者的帖子等;
    • 映射特征集/设计决策差异;
    • 如果您仍然没有足够的信息来做出决定,请在此处询问。

在您的情况下,请参阅:

C++ 11 线程与增强线程有什么区别吗?

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

没有一个答案可以统治它们。

TL;DR 这取决于

如果你想要最好的性能(也许是你使用 c++ 的原因之一(,请使用本机调用。您可以完全控制包装类和检查,并且没有开销。

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

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

相关内容

最新更新