Namespaces
Variants

tss_delete

From cppreference.net
헤더 파일에 정의됨 <threads.h>
void tss_delete ( tss_t tss_id ) ;
(C11 이후)

tss_id 로 식별되는 스레드별 저장소를 파괴합니다.

소멸자는, 만약 tss_create 에 의해 등록되었다면, 호출되지 않습니다 (소멸자는 스레드 종료 시, 즉 thrd_exit 를 통해 또는 스레드 함수에서 반환될 때만 호출됩니다). tss_id 를 인지하는 모든 스레드가 tss_delete 호출 이전에 필요한 모든 정리 작업을 수행하도록 하는 것은 프로그래머의 책임입니다.

만약 tss_delete 가 다른 스레드가 tss_id 에 대한 소멸자를 실행 중일 때 호출되면, 이로 인해 관련 소멸자의 호출 횟수가 변경되는지 여부는 명시되어 있지 않습니다.

만약 호출 스레드가 소멸자를 실행하는 동안 tss_delete 가 호출되면, 이 스레드에서는 tss_id 와 연관된 소멸자가 다시 실행되지 않습니다.

목차

매개변수

tss_id - 이전에 tss_create 에 의해 반환되고 아직 tss_delete 에 의해 삭제되지 않은 스레드별 저장소 키

반환값

(없음)

참고 사항

이 함수의 POSIX에 상응하는 함수는 pthread_key_delete 입니다.

tss_delete 가 소멸자를 절대 호출하지 않는 이유는 (스레드 종료 시 호출되는) 소멸자들이 일반적으로 원래 그 값을 설정한 동일한 스레드( tss_set 을 통해)에 의해 실행되도록 의도되었기 때문이며, 해당 소멸자가 다루게 될 값이나 다른 스레드별 데이터의 값을 해당 스레드가 인지한 상태에 의존할 수도 있기 때문입니다. tss_delete 를 실행하는 스레드는 다른 스레드들의 TSS에 접근할 수 없습니다. 비록 각 스레드의 tss_id 와 연관된 자체 값에 대한 소멸자를 호출하는 것이 가능하더라도, tss_delete 는 해당 스레드에서 이 TSS의 값이 null인지 검사하기 위해서만이라도 모든 스레드와 동기화를 수행해야 합니다 (소멸자는 null이 아닌 값에 대해서만 호출되기 때문입니다).

예제

참고문헌

  • C17 표준 (ISO/IEC 9899:2018):
  • 7.26.6.2 tss_delete 함수 (p: 282)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.26.6.2 tss_delete 함수 (p: 386)