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

时间:2018-04-08 21:02:24

标签: c++ multithreading c++11 std stdthread

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

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

2 个答案:

答案 0 :(得分:3)

经验法则:

  • 如果标准库中有某些内容用于> X年,使用它,除非你知道它不符合你的需要。
  • 如果标准库中存在< = X年,并且您正在编写非关键代码:与以前相同 - 请使用它。
  • 否则:

    • 了解它是如何进入标准库的(通常是:Boost);
    • 围绕讨论,提及他们两个,作者的帖子等;
    • 映射功能集/设计决策差异;
    • 如果您还没有足够的信息做出决定,请在此处询问。

在您的情况下,请参阅:

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

你注意到Boost线程有一些不在标准中的功能。如果需要,请使用Boost线程,否则使用std::thread

答案 1 :(得分:-2)

没有一个答案可以统治所有人。

TL; DR取决于

如果您想要最佳性能(可能是您使用c ++的原因之一),请使用原生呼叫。您可以完全控制包装类和检查的开销。

如果您需要可移植性并且支持c ++ 11 标准中的实施是一个不错的选择。大多数情况下,这个选项最容易开始并且拥有大部分资源。

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