As variáveis ​​estáticas da função são thread-safe no GCC?

No código de exemplo

void foo()
{
  static Bar b;
  ...
}

compilado comGCC é garantido queb será criado e inicializado de maneira segura?

Na página man do gcc, encontrei o-fno-threadsafe-statics opção de linha de comando:

Não emita o código extra para usar as rotinas especificadas na ABI C ++ para inicialização segura de thread de estática local. Você pode usar essa opção para reduzir um pouco o tamanho do código em um código que não precisa ser thread-safe.

Isso significa que as estatísticas locais são seguras, por padrão, com o GCC? Então, não há razão para colocar guarda explícita, e. compthread_mutex_lock/unlock ?

Como escrever código portátil - como verificar se o compilador irá adicionar seus guardas? Ou é melhor desativar esse recurso do GCC?

questionAnswers(4)

yourAnswerToTheQuestion