関数があるとします (おそらくメンバ関数)
SomeType foo()
{
static SomeType var = generateVar();
return var;
}
複数のスレッドから同時に「初めて」呼び出される場合、どのvar
ように初期化されますか?foo
generateVar()
どのシナリオでも一度だけ呼び出されることが保証されていますか(もちろん使用されている場合)?foo
どのシナリオでも複数回呼び出されたときに同じ値を返すことが保証されていますか?- プリミティブ型または非プリミティブ型の動作に違いはありますか?