名前空間
変種
操作

tss_set

提供: cppreference.com
< c‎ | thread
ヘッダ <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 の値を持ってデストラクタが終了した場合は、最大 TSS_DTOR_ITERATIONS 回まで thrd_exit によって再試行され、その後、ストレージは失われます。

[編集]

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

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.26.6.4 The tss_set function (p: 387)

[編集] 関連項目

スレッドローカルストレージから読み出します
(関数) [edit]