在阅读了MinGW-w64工具链后,我选择了Win32线程模型,因为它提供了比POSIX更好的性能。我自己没有资格对这个声明进行基准测试,但是here's a source for it。
起初,我认为该选项只会影响GCC运行时的内部工作,而不会阻止我在基于同用户rubenvb的this answer和this comment的代码中使用C++ 11线程。
但是,事实并非如此。在此MinGW-w64安装中似乎不存在std::thread
支持。
我从命令行调用g++,除了-std=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/