Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;11线程和Boost线程有什么区别吗?_C++_Boost_C++11 - Fatal编程技术网

C++ C++;11线程和Boost线程有什么区别吗?

C++ C++;11线程和Boost线程有什么区别吗?,c++,boost,c++11,C++,Boost,C++11,与Boost中的类相比,使用C++11多线程类有哪些优点/缺点?我将只使用Linux,因此不需要可移植性。其中一个库中是否缺少功能?有任何已知的限制吗?更好的语法?一般来说,boost类只是特定操作系统中存在的函数/对象的包装。它们的主要优点是boost包含为大多数操作系统编写的版本,因此包装器提供了原始函数/对象有时不具备的可移植性 如果boost没有其他需要,我强烈建议您使用标准C++11线程 原因: boost将不会提供超过系统允许的数量 您的代码不会有任何包装器开销(不管它有多小) 对

与Boost中的类相比,使用C++11多线程类有哪些优点/缺点?我将只使用Linux,因此不需要可移植性。其中一个库中是否缺少功能?有任何已知的限制吗?更好的语法?

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

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

原因:

  • boost将不会提供超过系统允许的数量

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

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

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

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

当然,boost也有一些优点:

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

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


标准螺纹具有标准化的优点,因此可移植到任何兼容的实施中

Boost线程库大致相同;标准库基于该库,并且一直在努力促进标准的一致性实现。它有一些可能有用的扩展,包括:

  • 加入
    超时
  • 线程中断
  • 线程组
  • 额外锁类型

是的,还有:1)、2)和3)@Itwasntpee事实上,Boost.Thread在过去的2年中发生了很多变化。您好,关于“您的代码将不会有任何包装器开销(无论它有多小)”,您是说理论上C++11类将更高效吗?@user997112 AFAIK Boost正在尽可能使用C++11线程,所以围绕它们一定会有一些开销。@Dariusz不,不是,这是两个完全不同的产品。