使用 MinGW 的 C++ 多线程
Posted
技术标签:
【中文标题】使用 MinGW 的 C++ 多线程【英文标题】:C++ Multithreading with MinGW 【发布时间】:2021-08-09 06:31:27 【问题描述】:我想用 c++ 试验多线程。我在 Windows 10 上使用 MinGW g++ 编译器(版本 8.2.0)。当我尝试使用直接从网站获得的代码将内置线程库与 c++ 一起使用时,出现错误:
main.cpp:34:5: 错误: 'thread' 未在此范围内声明 线程 th1(foo, 3); ^~~~~~ main.cpp:34:5: 注意:'std::thread' 定义在头文件'';你忘了'#include'吗? main.cpp:5:1: +#include 使用命名空间标准; main.cpp:34:5: 线程 th1(foo, 3); ^~~~~~ main.cpp:38:11: 错误: 预期';'在'th2'之前 线程 th2(thread_obj(), 3); ^~~~ ; main.cpp:49:11: 错误:预期 ';'在'th3'之前 线程 th3(f, 3); ^~~~ ; main.cpp:53:5:错误:未在此范围内声明“th1” th1.join(); ^~~ main.cpp:56:5: 错误: 'th2' 未在此范围内声明 th2.join(); ^~~ main.cpp:59:5: 错误: 'th3' 未在此范围内声明 th3.join(); ^~~
这是我的编译器特有的问题,还是 MinGW 根本不允许标准线程库?如果没有,有什么好的库可以替代?
【问题讨论】:
我确实添加了#include您可以:
installing mingw-w64 时选择“pthreads”选项,或 安装mingw-w64时选择“Win32线程”选项,并安装额外的头文件包。另一个不错的选择是install via MSYS2,它始终为您提供具有合适配置的最新版本。 (在这种情况下为 pthreads)。
如果您不打算通过 MSYS2,请参阅 this thread 了解更多信息。
【讨论】:
【参考方案2】:下载mingw时,有win32版本和POSIX版本。获取 POSIX,它将与 std::thread 实现一起提供。
【讨论】:
以上是关于使用 MinGW 的 C++ 多线程的主要内容,如果未能解决你的问题,请参考以下文章