Enterキーを押すと2番目のスレッドが中断され、終了メッセージを出力する3つのスレッドを実行するための次のコードがあります。
void input_val()
{
// DO STUFF
return;
}
void process_val()
{
// DO STUFF
try{
cout << "waiting for ENTER..." << endl;
boost::this_thread::sleep(boost::posix_time::milliseconds(200));
}
catch(boost::thread_interrupted&){
cout << "exit process thread" << endl;
return;
}
return;
}
void output_val()
{
// DO STUFF
}
int main()
{
char key_pressed;
boost::thread input_thread(boost::bind(&input_val));
boost::thread process_thread(boost::bind(&process_val));
boost::thread output_thread(boost::bind(&output_val));
cin.get(key_pressed);
process_thread.interrupt();
input_thread.join();
process_thread.join();
output_thread.join();
return 0;
}
process_thread は「ENTER」で中断されますが、「終了プロセス スレッド メッセージ」は出力されません。昨日、同様のプログラムが適切に実行されたので、誰が問題が何であるかを示唆できますか。前もって感謝します!