Ao declarar static thread_local
uma variável, cada thread possui uma cópia dessa variável. Imagine que um thread gira outro thread. Essa variável ainda será uma cópia no thread aninhado?
Ao declarar static thread_local
uma variável, cada thread possui uma cópia dessa variável. Imagine que um thread gira outro thread. Essa variável ainda será uma cópia no thread aninhado?
Uma
thread_local
variável possui uma instância em cada thread. Não importa como o thread é criado.Cada instância da
thread_local
variável é inicializada de acordo com sua declaração de inicialização. Não há cópias sendo feitas de uma instância para outra.A
static
palavra-chave tem um significado completamente ortogonal athread_local
. No escopo do bloco e no escopo da classe, é sempre redundantethread_local
. No escopo do namespace dá ligação interna à variável, o que significa que cada unidade de tradução (.cpp
arquivo) também terá sua própria instância da variável, além de haver uma instância por thread.