在安装MinGW-w64工具链时,我选择了Win32线程模型,因为它提供的性能优于POSIX。我没有资格自己对此声明进行基准测试,但here's a source for it。使用Win32线程模型时,MinGW-w64是否支持std :: thread开箱即用?
起初我以为这个选项只会影响到GCC运行时的内部运作,而不是阻止我用我的代码C++ 11个线程,基于this answer和this comment同胞用户rubenvb。
但是,这似乎并非如此。在这个MinGW-w64安装中,std::thread
支持似乎不存在。
我正在从命令行调用g ++,除-std=c++11
之外没有选项。
在这一点上,我不知道:
- rubenvb是错误的,它实际上是必要的POSIX线程模型下安装的MinGW-W64,以编译我的代码,它取决于C++ 11
thread
库,或; - 我完全误解了一切,或者;
std::thread
实际上在我的场景中得到了支持,它只是不直观。
我强化标题中的“开箱即用”部分。存在名为mingw-std-threads的库,如this answer中所示。但是,作为第三方的选择,它与这个问题无关。
因此,从今天(2016年5月)开始,MinGW-w64 nativelly是否支持std::thread
取决于代码,与Win32内部线程模型一起安装?
安装mingw-std-threads链接到,工作并需要大约30秒 –
@ M.M ...感谢您的建议,我已经这样做了。然而,这个问题主要是出于好奇/ canonicity的缘故。信息似乎在不同来源之间出现分歧。 –
我的回答和我的评论都不对。它们是在mingw-std-threads库不可用的时候编写的(至少我不知道它)。其内部线程模型设置为win32的GCC不支持C++ 11线程功能。我与你联系的答案正是这样说的。另一方面,我的评论并不提及C++ 11线程支持。相反,它使用以win32/posix构建的GCC作为其内部线程模型来处理调用pthread或win32线程相关函数,所有这些都可以像预期的那样工作。这是两个非常不同的话题。 – rubenvb