¿Las variables estáticas de funciones son seguras para subprocesos en GCC?

En el código de ejemplo

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

compilado conGCC esta garantizado queb ¿Se creará e inicializará de forma segura para subprocesos?

En la página del manual de gcc, encontramos el-fno-threadsafe-statics Opción de línea de comando:

No emita el código adicional para usar las rutinas especificadas en el ABI de C ++ para la inicialización segura de subprocesos de estadísticas locales. Puede usar esta opción para reducir ligeramente el tamaño del código en el código que no necesita ser seguro para subprocesos.

¿Significa que las estadísticas locales son seguras para subprocesos de forma predeterminada con GCC? Así que no hay razón para poner protección explícita, por ejemplo. conpthread_mutex_lock/unlock ?

¿Cómo escribir código portátil? ¿Cómo verificar si el compilador agregará sus guardas? ¿O es mejor desactivar esta función de GCC?

Respuestas a la pregunta(4)

Su respuesta a la pregunta