카테고리 없음

Busy Waiting

BUST 2018. 4. 16. 13:51

Busy Waiting

바쁜 대기는 공유 자원에 대한 권한 획득이 아주 빠른 시간 내에 이루어질 수 있다는 확신이 있는 상황 또는 뮤텍스나 세마포어 등의 동기화 객체등을 이용하기에는 그 오버헤드가 큰 상황에서 간단히 쓸 수 있다. 반면, 단순한 우선순위 스케줄링 혹은 FCFS(First-come First-served) 스케줄링 기반의 단일 프로세서 시스템에서는 바쁜 대기를 적용할 때에 시스템에 행(hang)이 걸릴 수도 있다. 따라서 이것은 멀티 프로세서 환경에서 사용하는 것이 바람직하며, 또한 바쁜 대기로 권한을 얻어서 공유자원을 이용하는 데에는 매우 짧은 시간동안의 연산만을 수행하고 곧바로 그 권한을 풀어 놓아야 한다는 제한이 있다.



static void *f1(void *p) { while (i==0) { /* do nothing - just keep checking over and over (busy waiting) */ } printf("i's value has changed to %d.\n", i); return NULL; }