2013-07-04 10 views
5

Diciamo che ho la seguente dichiarazione:Altri thread possono modificare la memoria locale del thread?

thread_local std::atomic<void*> local_var; 

sono modificazioni del local_var da altri thread permessi? Cioè, se comunico l'indirizzo di local_var a un altro thread, non modificherò local_var da lì richiamare i demoni nasali?

+0

Che cosa "thread-local" significa se fossero? –

+0

Sarebbe baaaaaaaad. –

+0

@TonyHopkinson Perché? Naturalmente, mi prenderò cura dei problemi della vita. L'indirizzo della variabile locale del thread non cambia una volta che è stato assegnato, quindi fondamentalmente potrei comunicare quell'indirizzo a un altro thread e modificare la variabile da lì con la sincronizzazione corretta. –

risposta

9

Sì, è consentito modificare le variabili locali thread di un altro thread.

Ciò che thread_local significa per una variabile è che il nome fa riferimento a un oggetto diverso in ogni thread, ma non significa che l'oggetto è privato del relativo thread. Se rendi la variabile conosciuta da qualcosa di diverso dal suo nome, cioè il suo indirizzo, allora altri thread possono accedervi.