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

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

假设我有以下声明:

thread_local std::atomic<void*> local_var;

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

最佳答案

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

对于变量,thread_local 的意思是名称 指的是每个线程中的不同对象,但这并不意味着该对象对其线程是私有(private)的。如果您通过名称以外的其他方式(即地址)让变量为人所知,那么其他线程就可以访问它。

关于c++ - 其他线程可以修改线程本地内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478474/

相关文章:

c - pthread_cond_wait 是否锁定互斥量和虚假唤醒

c++ - 在 SFML 中获取文本的尺寸

c++ - 如何在 GNU Makefile 中只获取没有扩展名的文件名?

c++ - Main 中的巨大 Try Catch block

并发

c++ - ISO 8601 时间戳 C++

c++ - 应该在构造函数链中使用 move 语义吗?

c++ - 多线程中的套接字

c++ - gcc 4.8 或更早版本是否存在关于正则表达式的问题?

c++ - 编写编译器 : how to get simple templates to work?