声明一个c ++ 11线程互斥体会破坏cout

时间:2016-07-22 03:53:10

标签: c++ powershell git-bash mingw-w64 stdthread

我刚刚安装了MinGW-w64,我正在尝试编写一个快速测试,看看我是否可以在我的机器上构建,然后在我兄弟的机器上运行它没有问题。不幸的是,我没有那么远。

我遇到的问题是我的代码编译得很好,但是如果我在git bash上运行它,我就没有输出,它会跳过我的输入。当我在Powershell上运行它时,它按预期工作。如果我注释掉一行(在我发布的最小版本中),它在git bash以及Powershell上运行正常。

以下是代码:

#include <mutex>
#include <iostream>

using std::mutex;
using std::cout;
using std::endl;
using std::cin;

int main(int argc, char **argv){
    cout << "Print the thing" << endl;
    cout.flush();
    mutex counterMutex; //If this is commented out, it works.
    cin.get();
}

不幸的是,在实际的程序中,我想做一些多线程,我需要互斥,所以只是跳过它们不是一种选择。

谁能告诉我发生了什么?

0 个答案:

没有答案