加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:32:06 所属栏目:百科 来源:网络整理
导读:在安装MinGW-w64工具链后,我已经选择了Win32线程模型,在阅读之后,它比POSIX对手提供了更好的性能.我没有资格自己对这个索赔进行基准测试,但是 here’s a source for it. 起初我认为这个选项只会影响GCC运行时的内部工作,而不会阻止我在代码中使用C 11线程,基
在安装MinGW-w64工具链后,我已经选择了Win32线程模型,在阅读之后,它比POSIX对手提供了更好的性能.我没有资格自己对这个索赔进行基准测试,但是 here’s a source for it.

起初我认为这个选项只会影响GCC运行时的内部工作,而不会阻止我在代码中使用C 11线程,基于this answer和this 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”模型,可以让线程“开箱即可”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读