3. 쓰레드 종료 및 연관 함수
System Program/pthread 2014. 3. 7. 11:591. 쓰레드 종료
쓰레드 종료에 대해서 크게 두가지 경우로 나누고 싶다.
1.1. 강제 종료
- main() 함수의 주 쓰레드가 종료 시에 모든 추가 쓰레드는 종료된다.
- 주 쓰레드나 추가 쓰레드 중에 exit() 함수 호출에 의한 종료 시 모든 쓰레드는 종료된다.
- pthread_cancle() 함수 호출에 의해서 종료
- pthread_kill() 함수에 의한 종료
pthread_canel() 및 pthread_kill() 함수에 대해서는 다른 장에서 자세히 살펴본다.
1.2. 쓰레드 자체 종료
- 쓰레드 콜백함수 return에 의한 종료
- 쓰레드가 pthread_exit() 호출에 의한 종료 (아래 함수 정의 참조)
void pthread_exit(void *retval);
pthread_exit()함수의 호출은 return을 수행하는 것과 유사하나 다음과 같은 차이가 있다.
콜백 함수에서 다른 함수를 호출하는 경우 그 호출 함수에서 pthread_exit()함수를 호출할 수 있다.
이 때 retval에 종료 상태를 리턴할 수 있다.
만약 주 쓰레드에서 pthread_exit() 함수를 호출할 경우에는 주 쓰레드는 종료하지만 다른 쓰레드는 생존한다.
2. 쓰레드 ID 비교 함수
쓰레드 종료나 다른 작업을 수행 시 유용한 pthread 함수를 아래에 소개한다.
2.1. 자기 자신의 쓰레드 ID 얻기
현재 자신의 쓰레드 ID는 아래와 함수를 통해서 알아볼 수 있다.
pthread_jon(), pthread_detach(),pthread_cancle(), pthread_kill() 함수 등에서 유용하게 사용할 수 있다.
pthread_t pthread_self(void);
호출 쓰레드의 쓰레드 ID를 리턴
2.2. 쓰레드 ID 비교 함수
int pthread_equal(pthread_t t1, pthread_t t2);
두 쓰레드가 동일하면 '0'이 아닌 값을 그렇지 않으면 '0'을 리턴한다.
3. 예제
예제는 쓰레드 생성 부분의 예제 코드를 보면 pthread_exit()를 사용한 내용이 있다.
'System Program > pthread' 카테고리의 다른 글
9. 쓰레드와 시그널 (0) | 2014.03.10 |
---|---|
4. 쓰레드 조인과 분리 (0) | 2014.03.07 |
2. pthread 생성 (0) | 2014.03.07 |
6. pthread attribute - (2) (0) | 2013.07.12 |
8. 쓰레드 클린업 핸들러(쓰레드 취소와 연관) (0) | 2013.07.03 |