Предположим, что существует функция (возможно, функция-член)
SomeType foo()
{
static SomeType var = generateVar();
return var;
}
Как var
будет инициализироваться, если foo
будет вызываться "в первый раз" из нескольких потоков одновременно?
- Гарантировано ли, что
generateVar()
будет вызываться только один раз в любом сценарии (если используется, конечно)? - Гарантируется ли, что
foo
будет возвращать одно и то же значение при вызове несколько раз в любом сценарии? - Есть ли разница в поведении для примитивных или не-примитивных типов?