我正在尝试使用 gcc 和 c++(前 c++11 和后)了解本地静态的行为。很多时候,在一个成员函数中,我发现自己在做这样的事情:
struct Foo
{
void foo()
{
static const bool bar = someFunc();
//etc
}
};
例如在someFunc()
哪里getenv("SOME_ENV_VAR")
。在上面的代码中,管理规则是什么bar
?我相信,但没有参考,gcc 将编译一个同步机制(不确定是什么)来保护上述本地静态免受多个线程的影响。如果不再是,事情会如何变化const
?或者如果我们让它成为本地线程__thread
?如果foo()
不是成员函数?