c++11 线程平台独立吗?

ozg*_*gur 4 c++ multithreading c++11

我搜索了很多问题和答案,但我真的无法弄清楚这个问题。昨天我在一个 Visual C++ 项目中在 Windows 上尝试了 C++11 线程,它工作正常。

这是否意味着我们可以在具有 C++11 支持的编译器的每个平台上使用 C++11 线程?是否有任何理由不使用此线程而不是 pthread 或 Windows 线程(取决于平台)?

Hel*_*rld 5

C++ 11 线程库仍然使用 OS 中的线程并依赖它们,但它以一种很好的方式进行了抽象,因此您几乎不会遇到任何差异。行为仅在细节上有所不同,您几乎不会注意到它们(仅在边缘情况和/或失败时)。可能仍然有一些平台不支持所有内容std::thread(即使在 2015 年,例如在某些特定/异国情调的移动平台上)。

从 C++ 标准:

30 线程支持库

本条款中描述的一些函数被指定为抛出 system_error (19.5.6) 类型的异常。如果检测到函数的任何错误条件,或者对操作系统或其他底层 API 的调用导致阻止库函数满足其规范的错误,则应抛出此类异常。 分配存储失败应按 17.6.5.12 中的描述报告。