Namespaces
Variants

tss_set

From cppreference.net
헤더 파일에 정의됨 <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 회까지 재시도되며, 그 이후에는 저장소가 손실됩니다.

예제

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)
스레드별 저장소에서 읽기
(함수)