其他线程可以修改线程本地内存吗?

时间:2013-07-04 21:48:01

标签: c++ multithreading c++11 thread-local

假设我有以下声明:

thread_local std::atomic<void*> local_var;

是否允许从其他线程修改local_var?也就是说,如果我将local_var的地址传达给另一个线程,那么不会从那里修改local_var召唤那些鼻子恶魔?

1 个答案:

答案 0 :(得分:11)

是的,允许修改另一个线程的线程局部变量。

thread_local对变量的意思是 name 引用每个线程中的不同对象,但这并不意味着该对象对其线程是私有的。如果你通过名称以外的其他东西(即地址)来知道变量,那么其他线程就可以访问它。