Если у меня естьДействительно ли волшебная статика гарантирует, что правая сторона выполнена только один раз?
atomic<int> cnt=0;
int get_int() noexcept
{
cnt++;
return rand();
}
, а затем:
void func()
{
static const auto value = get_int();
}
Я знаю, что не будет никаких условий гонки на инициализацию value
, но я не знаю, если get_int()
будет вызываться один раз, или в моем примере будет cnt
быть 1 (а не 2, 3, 4 или 5).
Предположим, что несколько потоков введены func()
и get_int
имеет только 1 контактный телефон в func()
.
Если вы беспокоитесь о нескольких потоках, вызывающих 'func' сразу, я думаю, вы могли бы использовать что-то вроде' std :: call_once ([] {cnt ++;}); ' – chris
cnt - просто пример, меня действительно беспокоит утечка так как моя реальная функция get_int фактически возвращает указатель на объект, который он выделяет. – NoSenseEtAl