고수님들에겐 당연하고 시시한 말일수도 있지만 C언어에서 쓰레드를 예시로 어디서 지역변수 전역변수가 접근되는지 여부를 한번 보겠다.
지역변수는 쓰레드간 미공유
void entry(int a) {
a = 1;
}
void main() {
int a = 0;
entry(a);
printf("%d\n", a);
}
출력은 0이 된다. 지역변수는 단순히 그 값을 가져왔기 때문에
전역변수는 쓰레드간 공유
# define A 0
void entry(int A) {
A = 1;
}
void main() {
entry(A);
printf("%d\n", A);
}
출력은 1이된다. 전역변수는 쓰레드간 공유가 된다.
'개발 > C' 카테고리의 다른 글
[C] socket 통신 (0) | 2023.09.18 |
---|---|
[C] inline (0) | 2023.02.23 |
[C] 상속 구현, 버전 구현 (0) | 2023.01.20 |
[C] syscall이란 (0) | 2023.01.13 |
[C] pthread_create, pthread_join, pthread_exit, fork (0) | 2023.01.13 |