![](/img/trans.png)
[英]std::thread, posix threads, and win32 threads in MinGW-W64
[英]Does MinGW-w64 support std::thread out of the box when using the Win32 threading model?
我在安装 MinGW-w64 工具链时选择了 Win32 线程模型,在阅读它提供比 POSIX 对应物更好的性能之后。 我自己没有资格对这个声明进行基准测试,但这是它的来源。
起初我认为这个选项只会影响 GCC 运行时的内部工作,而不会阻止我在我的代码中使用 C++11 线程,基于这个答案和用户rubenvb 的评论。
然而,情况似乎并非如此。 此 MinGW-w64 安装中似乎不存在std::thread
支持。
我从命令行调用g++ ,除了-std=c++11
没有其他选项。
在这一点上,我不确定:
thread
库的代码,实际上需要在POSIX线程模型下安装MinGW-w64,或者;std::thread
,只是不直观。我加强了标题中的“开箱即用”部分。 存在一个名为mingw-std-threads的库,如本答案所示。 但是,作为第三方选项,它与此问题无关。
那么,截至今天(2016 年 5 月),当与 Win32 内部线程模型一起安装时,MinGW-w64 是否本机支持std::thread
依赖代码?
要将 MinGW-w64 与 Win32 本机线程一起使用,您可以安装mingw-std-threads标头。
如该页面所述,这是因为 MinGW-w64 是 GCC 的一个端口,但 GCC 不包含任何本机线程支持。 相反,GCC 安装通常通过 gthreads 或 pthreads 作为 glibc 的一部分来实现线程。 MinGW-w64 不包含 glibc 的端口。 (相反,它结合使用 MSVC 运行时加上自己的代码来填补漏洞)。
同样如该页面所述,MinGW-w64 的最新版本确实包括 pthreads 的 Win32 端口(“winpthreads”),这解释了为什么您可以通过从 MinGW 中选择“pthread”模型来让线程“开箱即用”工作-w64 安装程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.