C++ 如果要测试请求的中断,为什么要使用boost disable_interruption()?
我在很多地方看到这样的代码:C++ 如果要测试请求的中断,为什么要使用boost disable_interruption()?,c++,multithreading,boost-thread,C++,Multithreading,Boost Thread,我在很多地方看到这样的代码: void threadFunction() { boost::this_thread::disable_interruption disable; while (!boost::this_thread::interruption_requested()) { //do stuff } } 对我来说,这看起来像是我“禁用”了线程函数被中断,但是我再次测试了中断。 奇迹般地,它起作用了。 有人能给我解释一下它在幕
void threadFunction()
{
boost::this_thread::disable_interruption disable;
while (!boost::this_thread::interruption_requested())
{
//do stuff
}
}
对我来说,这看起来像是我“禁用”了线程函数被中断,但是我再次测试了中断。
奇迹般地,它起作用了。
有人能给我解释一下它在幕后到底做了什么吗?
谢谢大家!
禁用中断
防止线程实际被中断;它不会阻止设置中断状态。然后,interruption\u requested
测试是否设置了中断状态
请参阅Boost文档:特别是
各种方法被归类为“中断点”,如果在请求中断时调用它们,则会引发异常,除非中断已被禁用
简言之:
- 禁用中断可防止中断实际停止线程,但中断仍会将线程标记为“中断请求”
方法检查是否已请求中断interruption\u requested