假设我有以下声明:
thread_local std::atomic<void*> local_var;
是否允许从其他线程修改local_var
?也就是说,如果我将local_var
的地址传达给另一个线程,那么不会从那里修改local_var
召唤那些鼻子恶魔?
答案 0 :(得分:11)
是的,允许修改另一个线程的线程局部变量。
thread_local
对变量的意思是 name 引用每个线程中的不同对象,但这并不意味着该对象对其线程是私有的。如果你通过名称以外的其他东西(即地址)来知道变量,那么其他线程就可以访问它。