我尝试condition_variable
使用两个线程来实现,如果我不使用用户输入(std::cin
),以下代码会很好地工作,但是一旦我使用它,程序在我在屏幕上输入数字后崩溃。
为什么会崩溃?
std::mutex mu;
std::condition_variable cond;
int x =0;
void th_in()
{
std::unique_lock <mutex> locker(mu);
std::cin>>x;
locker.unlock();
cond.notify_all();
}
void th_out()
{
std::unique_lock <mutex> locker(mu);
cond.wait(locker);
std::cout<<x<<std::endl;
locker.unlock();
}
int main()
{
std::thread t2(th_out);
std::thread t1(th_in);
std::cin.get();
return 0;
}