我遇到了将while()循环与阻塞方法相结合的问题。我使用while(true)+ escape条件以便于查看。
while(true)
{
//this is my blocking method
BlockingMethod();
//do other things here
//escape condition to get out of the loop
if(escape_condition) { break; }
}
我担心的是,一旦线程进入while()循环,它就会停留在阻塞方法中,并且永远不会逃脱转义条件。我怎么处理这个?
另外,我相信我的代码与此相同,我是否正确?
while(!escape_condition)
{
//this is my blocking method
BlockingMethod();
//do other things here
}
或者线程是否会遇到阻塞方法,一个条件满足入口条件,永远不会离开? (这将需要在循环内实现转义条件。)
答案 0 :(得分:0)
我认为BlockingMethod是你无法控制的东西?即,您无法更改函数以获取超时值,以便它不会永远阻塞?
如果没有,并且你不想在那里冻结那么你应该考虑将BlockingMethod()调用关闭到一个单独的线程中。然后你可以修改你的while循环以检查线程是否仍然在运行,如果你需要睡眠,如果你的情况需要太长时间,那么就杀死线程然后拯救。