使用什么最佳实践: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,它仍然是可行的选择。在最近的几个修订版中,相同的提升功能直接复制到标准中。(例如智能指针(