【问题标题】:C++ 11 Thread vs Boost Thread is there any difference? [duplicate]C ++ 11 Thread vs Boost Thread有什么区别吗? [复制]
【发布时间】:2013-05-22 08:15:28
【问题描述】:

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

【问题讨论】:

标签: c++ boost c++11


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    原因:

    • boost 不会提供超出系统允许的范围

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

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

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

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

    当然,boost 也有一些优点:

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

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

    【讨论】:

    • 您好,关于“您的代码不会有任何包装器开销(无论它可能有多小)”,所以您是说理论上 C++11 类会更高效?
    • @user997112 AFAIK boost 尽可能使用 c++11 线程,因此必须有一些开销来环绕它们。
    • @Dariusz 不,不是,这是两个完全不同的产品。
    猜你喜欢
    • 2014-09-02
    • 2012-01-22
    • 2011-12-15
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2015-01-28
    相关资源
    最近更新 更多