gcc と c++ (pre c++11 と post) を使用したローカル スタティックの動作を理解しようとしています。多くの場合、メンバー関数で次のようなことをしていることに気づきます。
struct Foo
{
void foo()
{
static const bool bar = someFunc();
//etc
}
};
たとえば、 はどこにsomeFunc()
ありますかgetenv("SOME_ENV_VAR")
。上記のコードで、 を管理するルールは何bar
ですか? 上記のローカル静的を複数のスレッドから保護するために、gccが同期メカニズムをコンパイルする(何がわからない)と信じていますが、参照はありません。それがなくなったら、物事はどのように変化しconst
ますか?または、それをスレッドローカルにすると__thread
? そしてfoo()
メンバー関数ではない場合は?