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(!escape_condition)
{
//this is my blocking method
BlockingMethod();
//do other things here
}
또는 입구 조건이 충족되는 블로킹 방법으로 스레드가 멈추고 꺼내지 않습니까? (루프 내부에 이스케이프 조건을 구현해야합니다.)
동일하거나 유사한 경우 'escape_condition'의 초기 상태에 따라 다릅니다. 첫 번째 코드는 적어도 한 번 이상'BlockingMethod'를 호출 할 것이고, 후자는 결코 그것을 호출하지 않을 것입니다. (하지만 .. * 다시 * 질문입니까?) –
하지만 차단 방법을 호출 한 후 코드를 종료 할 수 있습니까? =/ – CaTx
글쎄,'BlockingMethod'가 현재 실행을 블로킹 *했을 때, 확실히. 스레딩 (또는 다른 동시성)이 사용되지 않는 한 프로그램은 멋진 정리 순서로 실행됩니다 .. –