В С++ 11 это:
const std::vector<int>& f() {
static const std::vector<int> x { 1, 2, 3 };
return x;
}
является потокобезопасным. Однако есть ли дополнительное наказание за вызов этой функции после первого раза (т.е. Когда она инициализирована) из-за этой дополнительной поточно-безопасной гарантии? Мне интересно, будет ли функция медленнее, чем одна, используя глобальную переменную, потому что она должна получить мьютекс, чтобы проверить, будет ли он инициализироваться другим потоком каждый раз, когда он вызывается, или что-то в этом роде.