Являются ли статические переменные функции потокобезопасными в GCC?
В примере кода
void foo()
{
static Bar b;
...
}
составлено сНКУ это гарантировано, чтоb
будет создан и инициализирован потокобезопасным способом?
В gcc 'Страница man s, нашла-fno-поточно-статика опция командной строки:
Не выделяйте дополнительный код для использования подпрограмм, указанных в C ++ ABI, для поточно-ориентированной инициализации локальной статики. Вы можете использовать эту опцию, чтобы немного уменьшить размер кода в коде, который нене должно быть потокобезопасным.
Значит ли это, что локальная статика по умолчанию поддерживает GCC? Так что нет причин ставить явную охрану, например с ?pthread_mutex_lock/unlock
Как написать переносимый код - как проверить, добавит ли компилятор свои средства защиты? Или лучше отключить эту функцию GCC?