繁体   English   中英

使用 Win32 线程模型时,MinGW-w64 是否支持 std::thread 开箱即用?

[英]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没有其他选项。

在这一点上,我不确定:

  • rubenvb搞错了,为了编译我依赖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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM