2 つのスレッドで実装しようとしました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;
}