码迷,mamicode.com
首页 > 其他好文 > 详细

mingw-w64 gcc std::thread 行为异常

时间:2019-12-11 14:46:08      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:turn   cout   执行文件   class   txt   size   ace   auto   mingw   

我用的 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 行为异常

标签:turn   cout   执行文件   class   txt   size   ace   auto   mingw   

原文地址:https://www.cnblogs.com/Patt/p/12021848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!