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?