使用 Win32 线程模型时,MinGW-w64 是否支持开箱即用的 std::thread?
Does MinGW-w64 support std::thread out of the box when using the Win32 threading model?
我在安装 MinGW-w64 工具链时选择了 Win32 线程模型,在阅读后发现它提供了比 POSIX 对应的更好的性能。我自己没有资格对这个声明进行基准测试,但是 here's a source for it.
起初我认为这个选项只会影响 GCC 运行时的内部工作,而不会阻止我在我的代码中使用 C++11 线程,基于 this answer and 其他用户 [=31] =]rubenvb.
然而,情况似乎并非如此。 std::thread
支持似乎是 non-existent 在此 MinGW-w64 安装中。
我正在从命令行调用 g++,除了 -std=c++11
.
之外没有其他选项
此时我不确定是否:
- rubenvb 弄错了,实际上需要在 POSIX 线程模型下安装 MinGW-w64 才能编译依赖于 C++ 的代码11
thread
图书馆,或;
- 我完全误解了这一切,或者;
std::thread
其实在我的场景中是支持的,只是不直观。
我加强了标题中的"out of the box"部分。存在一个名为 mingw-std-threads, as presented in this answer 的库。但是,作为third-party选项,与本题无关。
那么,截至今天(2016 年 5 月),MinGW-w64 是否原生支持 std::thread
依赖代码,当安装了 Win32 内线程模型时?
要将 MinGW-w64 与 Win32 本机线程一起使用,您可以安装 mingw-std-threads headers。
如该页面所述,这是因为 MinGW-w64 是 GCC 的端口,但 GCC 不包含任何本机线程支持。相反,GCC 安装通常通过 gthreads 或 pthreads 作为 glibc 的一部分来实现线程。 MinGW-w64 不包含 glibc 端口。 (相反,它使用 MSVC 运行时的组合,加上自己的代码来填补漏洞)。
同样如该页面所述,最新版本的 MinGW-w64 确实包含 pthreads 的 Win32 端口 ("winpthreads"),这解释了为什么您可以通过选择 "out of the box" 让线程工作 "out of the box" =19=] 来自 MinGW-w64 安装程序的模型。
我在安装 MinGW-w64 工具链时选择了 Win32 线程模型,在阅读后发现它提供了比 POSIX 对应的更好的性能。我自己没有资格对这个声明进行基准测试,但是 here's a source for it.
起初我认为这个选项只会影响 GCC 运行时的内部工作,而不会阻止我在我的代码中使用 C++11 线程,基于 this answer and
然而,情况似乎并非如此。 std::thread
支持似乎是 non-existent 在此 MinGW-w64 安装中。
我正在从命令行调用 g++,除了 -std=c++11
.
此时我不确定是否:
- rubenvb 弄错了,实际上需要在 POSIX 线程模型下安装 MinGW-w64 才能编译依赖于 C++ 的代码11
thread
图书馆,或; - 我完全误解了这一切,或者;
std::thread
其实在我的场景中是支持的,只是不直观。
我加强了标题中的"out of the box"部分。存在一个名为 mingw-std-threads, as presented in this answer 的库。但是,作为third-party选项,与本题无关。
那么,截至今天(2016 年 5 月),MinGW-w64 是否原生支持 std::thread
依赖代码,当安装了 Win32 内线程模型时?
要将 MinGW-w64 与 Win32 本机线程一起使用,您可以安装 mingw-std-threads headers。
如该页面所述,这是因为 MinGW-w64 是 GCC 的端口,但 GCC 不包含任何本机线程支持。相反,GCC 安装通常通过 gthreads 或 pthreads 作为 glibc 的一部分来实现线程。 MinGW-w64 不包含 glibc 端口。 (相反,它使用 MSVC 运行时的组合,加上自己的代码来填补漏洞)。
同样如该页面所述,最新版本的 MinGW-w64 确实包含 pthreads 的 Win32 端口 ("winpthreads"),这解释了为什么您可以通过选择 "out of the box" 让线程工作 "out of the box" =19=] 来自 MinGW-w64 安装程序的模型。