C ++ 11 Thread vs Boost Thread有什么区别吗?

时间:2013-05-27 12:57:41

标签: c++ boost c++11

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

2 个答案:

答案 0 :(得分:4)

标准线程具有标准化的优势,因此可以移植到任何兼容的实现。

Boost线程库或多或少相同;标准库基于该库,并且已经努力使Boost成为标准的一致实现。它有一些可能有用的扩展,包括:

  • join超时
  • 线程中断
  • 线程组
  • 额外锁定类型

答案 1 :(得分:1)

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

如果没有其他需要来自boost我强烈建议使用标准的C ++ 11线程。

原因:

  • 提升不会提供超过系统允许的

  • 您的代码不会有任何包装器开销(无论多么小)

  • 提升对c ++ 11线程的支持是一项新功能,我担心它会在boost的实现中引入一些错误

  • 您不必依赖boost库,也可以节省编译和链接等时间。

  • 您不必更新提升,因为您不会使用它

当然,助推也有一些优点:

  • 很多人都知道提升,代码将(可能)更容易阅读

  • 如果你决定需要移植代码,那么你可能会有更轻松的时间(虽然C ++ 11是标准的,所以在某个地方,所有编译器都会实现它)