작성
·
17
답변 1
1
안녕하세요. 박상우님!
아래와 같이 사용하시면 void swap(int x, int y) 은 재진입에 대응할 수 있는 함수로서의 기능을 잘 수행해줍니다.
// 태스크 1
int a = 10, b = 20;
swap(&a, &b); // temp1은 태스크1의 스택
// 태스크 2 (동시 실행)
int c = 30, d = 40;
swap(&c, &d); // temp2는 태스크2의 스택
하지만, 아래와 같은 사용 예시에서는 재진입이 안된다는 점 양지하시기 바랍니다.
이건 swap 함수가 재진입 불가능해서가 아니라, 호출자가 같은 데이터에 동시 접근했기 때문입니다.
// 태스크 1
swap(&shared_x, &shared_y);
// 태스크 2 (동시 실행)
swap(&shared_x, &shared_y);
- 끝 -