6

次の宣言があるとします。

thread_local std::atomic<void*> local_var;

local_var他のスレッドからの変更は許可されていますか? つまり、 のアドレスlocal_varを別のスレッドに伝えた場合local_var、そこから変更すると、鼻の悪魔が召喚されませんか?

4

1 に答える 1

11

はい、別のスレッドのスレッドローカル変数を変更することは許可されています。

変数の意味thread_localは、名前が各スレッドの異なるオブジェクトを参照するということですが、オブジェクトがそのスレッドに対してプライベートであることを意味するわけではありません。変数をその名前以外のもの (アドレスなど) で認識できるようにすると、他のスレッドがそれにアクセスできるようになります。

于 2013-07-04T22:34:00.923 に答える