質問はthis questionの拡張です。入れ子になったローカルクラスの静的メソッド
元の質問では、OPは、静的関数のローカル変数をデータ競合から保護する必要があるかどうかを尋ねました。その答えは、各スレッドが独自のスタックフレームを取得することでした。静的関数を持つネストされたクラスにも同じことが当てはまると想定するのは安全でしょうか?
// Function called by several threads
int someFunc(int a, int b)
{
struct nestedStruct
{
static int do_something(int& a, int& b)
{
a = rand();
b = rand();
return a + b;
}
};
return nestedStruct::do_something(a, b);
}
すべてのローカル変数がスタック上にあり、すべてのスレッドが別々のスタックを取得します。それが静的関数であろうと入れ子にされたクラスであろうと、それはそれとは無関係です。 –
入れ子になったクラス(関数内で定義されていること)は、静的メンバーをまったく持てますか?私は静的メンバー変数で試しました。うまくいきませんでした。 – Sharad
@Sharad:確かに... http://ideone.com/tl8Za – Samaursa