名前空間
変種
操作

tss_set

From cppreference.com
ヘッダ<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 デストラクタ内で呼び出すことができます。デストラクタが NULL 以外の値を TSS ストレージに残して終了した場合、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)); // stores a pointer on TSS
        // ...
    }
} // calls free() for the pointer stored on TSS

[編集] 参照

  • C17標準 (ISO/IEC 9899:2018)
  • 7.26.6.4 The tss_set function (p: 282-283)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.26.6.4 The tss_set function (p: 387)

[編集] 関連項目

スレッド固有ストレージから読み込む
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)