Thread storage duration
From cppreference.net
識別子が記憶クラス指定子 _Thread_local (C11以降) で宣言されたオブジェクトは、スレッド記憶域期間を持ちます。その生存期間は作成されたスレッドの実行全体にわたり、格納された値はスレッド開始時に初期化されます。スレッドごとに個別のオブジェクトが存在し、式内で宣言された名前を使用すると、その式を評価するスレッドに関連付けられたオブジェクトを参照します。オブジェクトが関連付けられていないスレッドからスレッド記憶域期間を持つオブジェクトに間接的にアクセスしようとした結果は、実装定義です。
例
このコードを実行
const double PI = 3.14159; /* const変数は全てのスレッドに対してグローバル */ _Thread_local unsigned int seed; /* seedはスレッド固有の変数 */ int main(void) { return 0; }
出力例:
(none)