0

我遇到了将 while() 循环与阻塞方法结合起来的问题。为了便于查看,我使用了 while(true) + 转义条件。

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

}

或者线程会在满足入口条件的情况下被阻塞方法卡住,永远不会出去?(这将需要在循环内实现转义条件。)

4

1 回答 1

0

我认为 BlockingMethod 是您无法控制的东西?即,您不能更改函数以获取超时值,以便它不会永远阻塞?

如果没有,并且您不想在那里冻结,那么您应该考虑将 BlockingMethod() 调用旋转到一个单独的线程中。然后你可以修改你的while循环来检查线程是否仍在运行,如果你需要休眠,如果你的情况花费太长时间,那么终止线程并退出。

于 2013-01-02T22:21:01.750 回答