使用C ++ 11多线程类与Boost中的优势/缺点有哪些?我只会使用Linux,所以我不需要可移植性。其中一个库中是否缺少功能?任何已知的限制?更好的语法?
答案 0 :(得分:4)
标准线程具有标准化的优势,因此可以移植到任何兼容的实现。
Boost线程库或多或少相同;标准库基于该库,并且已经努力使Boost成为标准的一致实现。它有一些可能有用的扩展,包括:
join
超时答案 1 :(得分:1)
通常,boost类只是给定OS中存在的函数/对象的包装器。它们的主要优点是boost包含为大多数操作系统编写的版本,因此包装器提供了原始函数/对象有时不具备的可移植性。
如果没有其他需要来自boost我强烈建议使用标准的C ++ 11线程。
原因:
提升不会提供超过系统允许的
您的代码不会有任何包装器开销(无论多么小)
提升对c ++ 11线程的支持是一项新功能,我担心它会在boost的实现中引入一些错误
您不必依赖boost库,也可以节省编译和链接等时间。
您不必更新提升,因为您不会使用它
当然,助推也有一些优点:
很多人都知道提升,代码将(可能)更容易阅读
如果你决定需要移植代码,那么你可能会有更轻松的时间(虽然C ++ 11是标准的,所以在某个地方,所有编译器都会实现它)