Let's say I have the following declaration:

thread_local std::atomic<void*> local_var;

Are modifications of local_var from other threads allowed? That is, if I communicate the address of the local_var to another thread, won't modifying local_var from there summon the nasal demons?

有帮助吗?

解决方案

Yes, it is allowed to modify another thread's thread-local variables.

What thread_local means for a variable is that the name refers to a different object in each thread, but it doesn't mean the object is private to its thread. If you make the variable known by something other than its name, i.e. its address, then other threads can access it.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top