2012-03-22 5 views
0

스레드가 종료시기를 어떻게 알 수 있습니까?POSIX 스레드 관련 주제

상황 :

스레드가 실행을 완료하는 주요 프로그램은 기다려야합니다 -while

.

-이 작업은 pthread_join이라는 프로토 타입 함수를 사용하여 수행 할 수 있습니다.

이 함수를 호출하면 스레드 자체가 id를 가진 스레드의 종료를 기다립니다.

답변

2

pthread_join(ptherad_t &var)을 호출 한 후에는 join이라고하는 스레드가 모두 종료 될 때까지 주체가 대기합니다.

일단 모든 스레드가 완료되면 을 호출하면 pthread_exit(NULL) main이 종료됩니다.

작업 완료 후 pthread_exit(NULL)을 호출해야 스레드 실행이 중지됩니다. 그러나 이것은 필수는 아니며 스레드는 단순히 스레드가 완료되었음을 의미하는 리턴 할 수 있습니다.

(스레드)가 pthread_exit(NULL)을 호출하면 호출 스레드가 종료됩니다.

+0

나는 그것을 알고 있었다. 그러나 복잡한 대답이 있으면 사용할 수 있습니다. –

+0

대단히 감사합니다. –

+0

그건 옳지 않아. "pthread_join()을 호출하면 주 스레드는 모든 스레드가 종료 될 때까지 대기합니다." - pthread_join은 pthread_t 인자를 필요로합니다.이 인자는 어떤 쓰레드를 조인 하는지를 나타냅니다. 보통 당신이 차례대로 생성 한 각 쓰레드에 대해 pthread_join을 호출합니다. 생성 된 쓰래드는 pthread_exit를 호출 할 필요가 없다. 단순히 pthread_create가 호출 한 함수에서 리턴하는 것이지만, pthread_exit는 pthread_join에 전달할 void * 값을 지정하는데 사용될 수있다. 다른 옵션이 있습니다. 모든 스레드가 exit()를 사용하여 프로그램을 종료 할 수 있지만 항상 정리하지는 않습니다. 파일 및 공유 mem 제대로. –

관련 문제