スレッド・ローカル・ストレージ

スレッド・ローカル・ストレージ (TLS) を使うと,スレッドごとのデータを格納することができます。TLS は,マルチスレッド・プロセス中の個々のスレッドが,スレッド特有のデータを格納するための場所を割り当てることができる手段です。

動的に割り当てられた (実行時の) スレッド特有のデータは,TlsAlloc (格納されたデータに索引を割り当てる),TlsGetValue (索引から値を取り出す),TlsSetValue (索引に値を格納する),および TlsFree (動的な記憶域を解放する) などのルーチンによってサポートされます。スレッドは動的な記憶域を割り当て,TlsSetValue を使って索引にその記憶域へのポインタを関連付けます。その記憶域を参照する必要が生じたら,スレッドは索引を指定して TlsGetValue を呼び出します。

すべてのスレッドが索引を使い終わったら,TlsFree で動的な記憶域を解放します。