동일한 함수로 두 개의 스레드를 만들면 함수의 정적 변수가 공유됩니까? 그리고 그들은 어디에서 구원 받습니까? 주 스레드의 정적 데이터에 저장하면 두 스레드에서 공유되기 때문입니다.스레드에 대한 상호 함수
코드 예제 :
는void fill_g_msg(void){
pthread_t t1, t2;
pthread_create(&t1, NULL, thread_fill, “first");
pthread_create(&t2, NULL, thread_fill, “second");
// wait for both threads to finish
pthread_join(t1, NULL);
pthread_join(t2, NULL);
}
void* thread_fill(void *arg){
int a;
if(strcmp((char*)arg, “second”) == 0) {
a = 1;
} else {
a = 2;
}
return null;
}
귀하의 예는 정적 변수가 표시되지 않습니다. –
"a"변수를 의미합니다. 정적 인 것입니까? – Moawiya
아니요, 명시 적으로 '정적'을 추가하지 않으면 함수의 모든 호출이 자체 로컬 변수 집합을 가져옵니다. –