2014-01-30 4 views
0

개체 X가 영원히 돌아가도록되어 있다고 가정합니다. X는 내부에 무한 루프가있는 스레드를 실행하므로 프로그램이 종료되지 않습니다. 그것은 deconstructor, 예를 들어, 모든) (조인 방법을 사용 넣어하는 것이 좋습니다, 또는 무한 루프에서 join() 메서드를 사용하거나 사용하지 않으려면

int main() { 
    X myX; 
    while(1) { 
    } 
    return 0; 
} 

이처럼 뭔가를 더 나을 :

내 질문은 이것이다 두 가지 접근법간에 차이가 있습니까?

+0

나는 프로그램을 영원히 실행할 수 있다고 가정하는 것이 바람직하지 않다고 생각한다. 루프를 처리하는 하드웨어 모니터링 스레드가 있지만 정상적으로 종료 할 수 있도록 스레드 중지 메커니즘이 있습니다. –

+0

나는 프로그램이 영원히 계속 될 수 있다고 가정하는 것은 나쁜 습관이라고 생각한다. - 잘못했다. –

+1

왜 그렇습니까? 임베디드 어플리케이션에서 이것은 대부분의 경우입니다. – Bob

답변

1

간혹 가끔씩 요구되는 경우가 종종 있습니다. 앱이 그렇게하지 않도록 디자인 할 수 있다면 훨씬 더 좋습니다.

+0

. '때때로 가끔씩 요구됩니다. 언젠가는 join'() 함수 나 main 내부의 while (1)을 참조하고 있습니까? – Bob

1

스레드가 종료 될 때까지 프로그램의 일부가 실행을 기다려야하는 경우 join()으로 전화 할 수 있습니다. 또한 스레드 객체를 파괴 가능하게 만들어 메모리 누출을 만들지 않습니다. 결합되지 않은 스레드는 좀비 프로세스 및 폐기물 자원과 같습니다.

+1

확실하지만 임베디드 장치 또는 마이크로 컨트롤러의 경우 '메인'프로그램에서 while (1)을 자주 보았습니다. 그러므로 제 질문입니다. – Bob

+1

App-lifetime 스레드가 항상 (즉, 거의) 명시 적 종료 및 정리가 필요하지는 않습니다. –

+0

@chicks 내 질문은 응용 프로그램이 영원히 실행되기 때문에 스레드 자체가 종료되지 않는 경우에 관한 것입니다. 그래서 심지어 조인()은 영원히 기다릴 것입니다. – Bob

관련 문제