小编典典

C++11 std::threads vs posix 线程

all

为什么在实践中我应该更喜欢一个或另一个?std::thread除了是一个类之外,还有什么技术差异?


阅读 116

收藏
2022-08-16

共1个答案

小编典典

如果您想在许多平台上运行代码,请选择 Posix Threads。它们几乎随处可见,并且非常成熟。另一方面,如果您只使用
Linux/gccstd::thread则完全没问题——它具有更高的抽象级别、非常好的接口并且可以与其他 C++11 类很好地配合使用。

std::thread不幸的是,即使 C11 似乎可用,C11类也不能(还)在每个平台上可靠地工作。例如,在原生
Androidstd::thread或 Win64 中,它只是无法正常工作或存在严重的性能瓶颈(截至 2012 年)。

一个很好的替代品是boost::thread-
它与(实际上它来自同一作者)非常相似std::thread并且工作可靠,但是,当然,它引入了来自第三方库的另一个依赖项。


编辑:截至 2017 年,std::thread主要适用于原生 Android。一些类,如std::timed_mutex仍未实现。

2022-08-16