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

前端之家收集整理的这篇文章主要介绍了c – 使用Win32线程模型时,MinGW-w64是否支持std :: thread开箱即用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在安装MinGW-w64工具链后,我已经选择了Win32线程模型,在阅读之后,它比POSIX对手提供了更好的性能.我没有资格自己对这个索赔进行基准测试,但是 here’s a source for it.

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

我从命令行调用g,而不是-std = c 11以外的选项.

在这一点上,我不确定:

> rubenvb是错误的,实际上有必要在POSIX线程模型下安装MinGW-w64,以便编译依赖于C 11线程库的代码,或者;
我完全误解了一切,或者;
> std :: thread实际上是在我的场景中支持的,它只是不直观.

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

那么,截至今天(2016年5月),MinGW-w64是否支持std :: thread依赖代码,当安装了Win32内部线程模型?

解决方法

要将MinGW-w64与Win32本机线程一起使用,您还必须安装 mingw-std-threads标头.

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

同样如该页面所述,MinGW-w64的最新版本确实包含一个pthreads的Win32端口,它解释了为什么通过从MinGW-w64安装程序中选择“pthread”模型,可以让线程“开箱即可”.

猜你在找的C&C++相关文章