スレッド ローカル ストレージを利用する C++ コードがいくつかあります。各スレッドには、データをプッシュできるベクトルがあります。
TLS を使用してスレッドごとにインデックス ID を保存します。これを使用して、データをプッシュするベクトルを検索できます。次に、データをベクターにプッシュするかなりの量のコードを実行します。
私が疑問に思っているのは、OS がスレッド ローカル オブジェクトへのポインターを取得した後、別のスレッドで実行するようにコードを再スケジュールする可能性があるかどうかです。(これまでのところ、コードは正常に実行されますが、これが発生したことはありません)。しかし、2 つのスレッドが同じオブジェクトを持つことが可能になるため、これが可能であるとすれば、私のプログラムが壊れることは間違いないようです。
これが真実であると仮定すると、複雑な TLS を使用するコードでも問題になるように思われますが、TLS はアドレスを取得しない単純なオブジェクトのみを対象としていますか?
ありがとう!