내 질문은 this question의 확장입니다.중첩 된 로컬 클래스의 정적 메서드
원래 질문에서 OP는 정적 함수의 로컬 변수가 데이터 경합으로부터 보호되어야하는지 여부를 묻습니다. 대답은 각 스레드가 자체 스택 프레임을 얻는 것입니다. 정적 함수가있는 중첩 클래스에도 똑같이 적용된다고 가정하는 것이 안전합니까? rand
다음 스레드로부터 안전합니다 (이 경우 잘 모르겠어요) 외부 기능과 중첩 고정 기능이 모두 정상입니다입니다 그래서 만약
// 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);
}
모든 로컬 변수가 스택으로 이동하고 모든 스레드가 별도의 스택을 얻습니다. 정적 함수 이건 중첩 클래스 이건 상관이 없습니다. –
중첩 클래스 (함수 내부에 정의 됨)에 정적 멤버가있을 수 있습니까? static 멤버 변수로 시도했다. 일하지 않았어. – Sharad
@Sharad : 확실하게 ... http://ideone.com/tl8Za – Samaursa