tss_create
|
헤더 파일에 정의됨
<threads.h>
|
||
|
int
tss_create
(
tss_t
*
tss_key,
tss_dtor_t
destructor
)
;
|
(C11 이후) | |
새로운 스레드별 저장소 키를 생성하고 이를
tss_key
가 가리키는 객체에 저장합니다.
동일한 키 값이 서로 다른 스레드에서 사용될 수 있지만,
tss_set
에 의해 키에 바인딩된 값들은 스레드별로 유지되며 호출 스레드의 수명 동안 지속됩니다.
값 NULL 은 새로 생성된 키와 관련하여 모든 기존 스레드에서 연관되며, 스레드 생성 시 모든 TSS 키와 연관된 값은 NULL 로 초기화됩니다.
만약
destructor
가 null 포인터가 아니라면, 해당 소멸자를
thrd_exit
에 의해 스토리지가 해제될 때 호출되는 소멸자와도 연관시킵니다
(단,
tss_delete
에 의한 경우나
exit
에 의한 프로그램 종료 시에는 호출되지 않습니다).
스레드별 저장소 소멸자 내에서
tss_create
를 호출하면 정의되지 않은 동작이 발생합니다.
목차 |
매개변수
| tss_key | - | 새로운 스레드별 저장소 키를 저장할 메모리 위치에 대한 포인터 |
| destructor | - | 스레드 종료 시 호출할 함수에 대한 포인터 |
참고 사항
이 함수의 POSIX에 상응하는 것은
pthread_key_create
입니다.
반환값
thrd_success 성공한 경우, thrd_error 그렇지 않은 경우.
예제
|
이 섹션은 불완전합니다
이유: 개선 필요, 영감을 얻기 위해 POSIX 예제를 찾아볼 것 |
int thread_func(void *arg) { tss_t key; if (thrd_success == tss_create(&key, free)) { tss_set(key, malloc(4)); // TSS에 포인터를 저장 // ... } } // TSS에 저장된 포인터에 대해 free()를 호출
참고문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.26.6.1 tss_create 함수 (p: 281-282)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.26.6.1 The tss_create 함수 (p: 386)