ExpertiDict

C++ · Avançado · Inglês · Técnico

thread local

θɹɛd ˈloʊ.kəlpalavra-chave

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ê 1

Exemplos

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

Veja também

Todos os termos de C++