Skip to content

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)

See also

Favorite site