mingw-w64 gcc std::thread 行为异常
Posted patt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mingw-w64 gcc std::thread 行为异常相关的知识,希望对你有一定的参考价值。
我用的 ming-w64 gcc 是通过 MSYS2 安装的,包名是 mingw-w64-x86_64-gcc
,版本 9.2.0-2。
我发现 std::thread 行为异常。
int main() {
auto f = [](int i) {
cout << "i: " << i << endl;
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
};
vector<thread> threads;
for (int i = 0; i < 3; ++i) {
threads.emplace_back(thread(f, i));
}
for (auto &t : threads) {
t.join();
}
cout << "size: " << threads.size() << endl;
return 0;
}
可能会输出
i: 0
i: 2
i: 1
i: 2
size: 3
同样的代码,将 toolchain 换成 Visual Studio,编译生成的可执行文件就是正常的。
以上是关于mingw-w64 gcc std::thread 行为异常的主要内容,如果未能解决你的问题,请参考以下文章
传递指向成员函数的指针在 MinGW-w64 中编译,但不在 gcc 中
mingw-w64线程模型:posix vs win32(posix允许使用c++11的std:: thread,但要带一个winpthreads,可能需要额外dll)
GCC (MingW-w64) 找不到基础构造函数 (!?)
我在哪里可以找到 `mingw64/mingw-w64-x86_64-gcc-libs` 8.2.0-3 的源代码包?