В 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?
}
Кроме того, различные потоки из пула потоков, выполняющие эту функцию, нужно ли защищать myint блокировкой? при условии, что все передаваемые ему значения различны и не имеют никакого отношения друг к другу.
РЕДАКТИРОВАТЬ: Спасибо за ответы. А что если я передам boost::shared_ptr<T>
, зная, что этот объект не будет одновременно использоваться другим потоком? (Не уверен, действительно ли это можно гарантировать, или нет?)
Я полагаю, что переданный сырой ptr нуждается в некоторой защите, если бы он использовался повсюду?