tss_delete
|
헤더 파일에 정의됨
<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)