Ton*_*ion 10 c++ multithreading static-functions
在C++中,当你在静态成员函数中有局部变量时,它是否意味着那些局部变量也是隐式静态的,还是它们真的是本地的?
例:
static void myClass::somefunc(int someint)
{
int myint = someint; // is myint really a local variable or does it change due to the static qualifier at function level?
}
Run Code Online (Sandbox Code Playgroud)
此外,运行此函数的线程池中的不同线程是否需要通过锁保护myint?假设传递给它的所有值都不同并且彼此没有关系.
编辑:Thanx的答案.现在如果我传入了一个boost::shared_ptr<T>
,知道这个对象不会被另一个线程同时使用?(不确定是否可以真正保证,或者你能吗?)
我猜一个原始的ptr传入,如果它被全部使用,需要一些保护吗?
它们是本地的,除非你声明它们static
- 函数的每个invokation都有自己的变量副本,你不需要保护它们.