Pthread cancel
인자로 주어진 쓰레드 식별자 thread를 가지는 쓰레드에게 종료 요청을 보낸다.
pthread_setcancelstate
pthread_setcancelstate는 이 함수를 호출한 쓰레디의 취소 상태를 변경하기 위해서 사용된다.
- PTHREAD_CANCEL_ENABLE
- 취소 상태를 활성화.
- PTHREAD_CANCEL_DISABLE
- 취소 상태를 비활성화.
pthread_setcanceltype
pthread_setcanceltype는 취소 요청을 받은 쓰레드가 어떻게 반응 할건지(취소타입)를 결정하기 위해서 사용된다. 반응의 종류는 type를 통해서 설정할수 있다.
이 함수는 당연하지만 취소상태가 PTHREAD_CANCEL_DISABLE
라면 의미 없는 함수다.
- PTHREAD_CANCEL_ASYNCHRONOUS
- 바로 종료한다.
- PTHREAD_CANCEL_DEFERRED
- 후자의 경우 취소지점을 벗어날 때까지 기다리게 된다.
Default argument
별다른 설정이 없을 경우 pthread_create로 만들어 지는 쓰레드는 PTHREAD_CANCEL_ENABLE
, PTHREAD_CANCEL_DEFERRED
로 상태로 생성된다.
취소 지점
취소지점은 다음과 같은 함수들이다. 취소 요청을 받은 쓰레드는 취소지점에 대기하고 있다가 벗어나면 종료하게 된다.
- pthread_join(3)
- pthread_cond_wait(3)
- pthread_cond_timedwait(3)
- pthread_testcancel(3)
- sem_wait(3)
- sigwait(3)