是c++11线程平台独立的
Is c++11 thread platform independent?
我搜索了很多问题和答案,但我真的没有弄清楚这个问题。昨天我在一个Visual c++项目中尝试了Windows上的c++ 11线程,它工作得很好。
这是否意味着我们可以在所有支持c++ 11编译器的平台上使用c++ 11线程?是否有任何理由不使用此线程而不是pthread或Windows线程(取决于平台)?c++ 11线程库仍然使用来自操作系统的线程并依赖于它们,但是它以一种很好的方式进行了抽象,因此您几乎不会感受到任何差异。行为只是在细节上有所不同,你几乎不会注意到它们(只有在边缘情况和/或失败时)。可能仍然有一些平台不支持std::thread
的所有内容(即使在2015年,例如在一些特定/外来的移动平台上)。
来自c++标准:
30线程支持库
此子句中描述的一些函数被指定为抛出system_error类型的异常(19.5.6)。这些例外应该是当检测到函数的任何错误条件或调用时引发对操作系统或其他底层API的访问将导致错误 分配存储失败应按中所述进行报告17.6.5.12 .
c++ 11的线程机制是跨平台的,就像标准c++的其他特性一样。根据我的理解,所有主要的编译器都打算尽其所能地支持c++标准,这意味着支持线程库。
这取决于编译器对它的支持程度。我想GCC/VS/Intel现在已经有很好的支持了,但是如果你的目标是一些外来的平台,那就不一定了。
STL的情况已经有一段时间了——它主要是可移植的,但它实际上取决于实现。仅仅因为它在标准中并不意味着它就会神奇地工作,即使它工作的机会比它不在标准中要高得多。
仍然会有其他实现- pthread, boost,等等。使用哪一个取决于你的个人喜好,你的需求等等。
是的,它与平台无关。它可以(通常是)作为pthread的包装器实现,所以基本上它可以是具有不同API的pthread。
- 如何创建独立于平台的宏来包装编译器扩展?
- 为什么C++哈希函数的返回类型是 std::size_t,而不是独立于平台的类型?
- 如何在Qt WebChannel中以独立于平台的方式在HTML/Javascript和C++之间进行通信?
- Qml:等宽/普通字体的平台独立方式
- 发行配置的无效配置参数在X64平台上独立执行
- 独立于平台的方式捕获控制台/终端关闭事件
- 最佳平台独立 pi 常数
- 如何实现独立于平台的异步文件写入
- C++:如何保存独立于平台的二进制文件
- 独立于平台的OpenSSL库
- 包括具有一个头文件和独立源文件的特定于平台的库
- 如何以尽可能独立于平台的方式从 c++ 调用 .NET
- 最易于使用、轻量级、独立于平台的图形库,用于C++
- 尽管严重依赖JVM,但Java是如何独立于平台的
- 使用独立于平台的C/C++对数据块进行加密
- 是否可以像Java一样在VM中运行,从而使C++平台独立
- Mac地址-C++-独立于平台
- 如何以独立于平台的方式终止挂起在阻塞 IO 上的线程
- 与GLUT一起使用的独立于平台的用户界面库
- c++使运行时间独立于平台