gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:28:44 24 4
gpt4 key购买 nike

在安装 MinGW-w64 工具链时,我选择了 Win32 线程模型,因为它提供了比 POSIX 对应物更好的性能。我自己没有资格对此声明进行基准测试,但是 here's a source for it .

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

我从命令行调用 g++,除了 -std=c++11 之外没有其他选项。 .

在这一点上,我不确定是否:

  • rubenvb 弄错了,实际上需要在 POSIX 线程模型下安装 MinGW-w64 才能编译我的代码,它依赖于 C++11 thread图书馆,或;
  • 我完全误解了这一切,或者;
  • std::thread在我的场景中实际上是支持的,它只是不直观。

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

    因此,截至今天(2016 年 5 月),MinGW-w64 是否原生支持 std::thread取决于代码,当与 Win32 内线程模型一起安装时?

    最佳答案

    要将 MinGW-w64 与 Win32 native 线程一起使用,您可以安装 mingw-std-threads标题。

    如该页所述,这是因为 MinGW-w64 是 GCC 的一个端口,但 GCC 不包含任何 native 线程支持。相反,GCC 安装通常通过 gthreads 或 pthreads 作为 glibc 的一部分来实现线程。 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com