tss_set
|
헤더 파일에 정의됨
<threads.h>
|
||
|
int
tss_set
(
tss_t
tss_id,
void
*
val
)
;
|
(C11 이후) | |
현재 스레드의
tss_id
로 식별되는 스레드별 저장소 값을
val
로 설정합니다. 서로 다른 스레드들은 동일한 키에 대해 다른 값을 설정할 수 있습니다.
소멸자가 존재하는 경우에도 호출되지 않습니다.
목차 |
매개변수
| tss_id | - | 스레드별 저장소 키, tss_create 로부터 획득하며 tss_delete 에 의해 삭제되지 않음 |
| val | - | 스레드별 저장소에 설정할 값 |
반환값
thrd_success 성공한 경우, thrd_error 그렇지 않은 경우.
참고 사항
이 함수의 POSIX에 상응하는 것은
pthread_setspecific
입니다.
일반적으로 TSS는 호출 스레드가 사용하도록 예약된 동적으로 할당된 메모리 블록에 대한 포인터를 저장하는 데 사용됩니다.
tss_set
는 TSS 소멸자 내에서 호출될 수 있습니다. 만약 소멸자가 TSS 저장소에 NULL이 아닌 값으로 종료되면,
thrd_exit
에 의해 최대
TSS_DTOR_ITERATIONS
회까지 재시도되며, 그 이후에는 저장소가 손실됩니다.
예제
|
이 섹션은 불완전합니다
이유: 개선 필요, 영감을 얻기 위해 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.4 tss_set 함수 (p: 282-283)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.26.6.4 tss_set 함수 (p: 387)
참고 항목
|
(C11)
|
스레드별 저장소에서 읽기
(함수) |