C++ · Avançado · Inglês · Técnico
thread local
Especificador de duração de armazenamento, escrito thread_local, em que cada thread tem a própria cópia da variável. A cópia nasce com a thread e é destruída quando ela termina.
Onde usar
Usado em caches e geradores aleatórios por thread, que evitam locks. Em review, cuidado com pools de threads, em que o valor sobrevive entre tarefas diferentes.
Em código
thread_local int contagem = 0;
void f() {
++contagem; // cópia desta thread
}
std::thread a(f), b(f);
a.join(); b.join(); // cada uma vê 1Exemplos
Make the random generator thread local, no lock needed.
Faça o gerador aleatório thread local, sem lock.
Each thread sees its own copy of this variable.
Cada thread vê a própria cópia dessa variável.
Cuidado
Não é o mesmo que variável local: ela é global ou estática no escopo, só que replicada por thread.
Sinônimos
armazenamento por thread