在阅读了MinGW-w64工具链后,我选择了Win32线程模型,因为它提供了比POSIX更好的性能。我自己没有资格对这个声明进行基准测试,但是here's a source for it

起初,我认为该选项只会影响GCC运行时的内部工作,而不会阻止我在基于同用户rubenvb的this answerthis comment的代码中使用C++ 11线程。
但是,事实并非如此。在此MinGW-w64安装中似乎不存在std::thread支持。

我从命令行调用g++,除了-std=c++11之外没有其他选项。

在这一点上,我不确定是否:

  • rubenvb被误认为,实际上有必要在POSIX线程模型下安装MinGW-w64,以便编译依赖于C++ 11 thread库的代码。
  • 我完全误解了这一切,或者;
  • 在我的方案中实际上支持
  • std::thread,但这不是很直观。

  • 我加强标题中的“开箱即用”部分。如mingw-std-threads所示,存在一个名为this answer的库。但是,作为第三方选项,它与此问题无关。

    那么,从今天(2016年5月)开始,与Win32内部线程模型一起安装时,MinGW-w64是否原生支持std::thread依赖代码?

    最佳答案

    要将MinGW-w64与Win32本机线程一起使用,可以安装mingw-std-threads header 。

    如该页面上所述,这是因为MinGW-w64是GCC的端口,但是GCC不包含任何本机线程支持。相反,GCC安装通常作为glibc的一部分通过gthreads或pthreads实现线程。 MinGW-w64不包含glibc端口。 (相反,它使用MSVC运行时的组合,加上自己的代码来填补漏洞)。

    也如该页面上所述,MinGW-w64的最新版本确实包含pthreads的Win32端口(“winpthreads”),这说明了为什么可以通过从MinGW中选择“pthread”模型来“开箱即用”运行线程。 -w64安装程序。

    关于c++ - 使用Win32线程模型时,MinGW-w64是否开箱即用地支持std::thread?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63180088/

    10-14 16:45
    查看更多