Busy waiting
바쁜 대기(영어: busy waiting 또는 spinning)란 어떠한 특정 공유자원에 대하여 두 개 이상의 프로세스나 스레드가 그 이용 권한을 획득하고자 하는 동기화 상황에서 그 권한 획득을 위한 과정에서 일어나는 현상이다. 대부분의 경우에 스핀락(Spin-lock)과 이것을 동일하게 생각하지만, 엄밀히 말하자면 스핀락이 바쁜 대기 개념을 이용한 것이다.
장단점
바쁜 대기는 공유 자원에 대한 권한 획득이 아주 빠른 시간 내에 이루어질 수 있다는 확신이 있는 상황 또는 뮤텍스나 세마포어 등의 동기화 객체등을 이용하기에는 그 오버헤드가 큰 상황에서 간단히 쓸 수 있다. 반면, 단순한 우선순위 스케줄링 혹은 FCFS(First-come First-served) 스케줄링 기반의 단일 프로세서 시스템에서는 바쁜 대기를 적용할 때에 시스템에 행(hang)이 걸릴 수도 있다. 따라서 이것은 멀티 프로세서 환경에서 사용하는 것이 바람직하며, 또한 바쁜 대기로 권한을 얻어서 공유자원을 이용하는 데에는 매우 짧은 시간동안의 연산만을 수행하고 곧바로 그 권한을 풀어 놓아야 한다는 제한이 있다.