我想在一段时间后中断一个提升线程。
我的控制流程是我有一个主线程。 在主线程中我做了:
int main() {
boost::thread t(my_func);
boost::this_thread::sleep_for(boost::chrono::seconds(60));
t.interrupt();
t.join();
return 0;
}
void my func() {
try {
// do something that takes a time greater than sleep time
boost::this_thread::interruption_point();
}
catch (boost::thread_interrupted &) {
printf("the spawned thread is exiting);
}
}
我正在尝试这个但是由于某种原因,当调用sleep函数时,中断点没有被捕获。即使我拿走了睡眠功能,也没有显示捕获信息。
如果主要功能是在另一个线程上运行的线程,您的答案会如何变化?