2
我有这样一段代码执行三个线程,其中第二线程应该得到的紧迫中断输入并打印出消息:升压线不打印退出消息
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”上但不打印“退出进程线程消息”。任何人都可以提出什么问题可能,因为我有一个类似的程序昨天正常运行。 在此先感谢!
适用于我,如果我增加超时到2000毫秒。编译器,平台,版本? – dyp
*备注:*'cin.get(key_pressed);'在这种情况下''cin.ignore();'应该足够了,因为你不使用输入。 – dyp