Это больше вопрос статических переменных в функциональной области по сравнению со всеми другими статическими переменными, а не в области и глобальных.
Все статические переменные вне области действия создаются перед main (), в то время как существует только один активный поток. Статические переменные в области видимости создаются при первом вызове их содержащей функции. В стандарте ничего не говорится о том, как строится статика на уровне функций, когда функция вызывается в нескольких потоках. Однако каждая реализация, с которой я работал, использует блокировку вокруг конструктора (с дважды проверенным флагом), чтобы гарантировать безопасность потока.