Sleep(0) 과 Sleep(1)
Thread 간 우선순위(Priority) 가 다른 경우에 사용법이 틀려 진다.
1. Sleep(0)
다른 Thread 가 Ready to run 되었다고 해서 자신이 쥐고 있는 CPU의 선점을 풀지 않는다.
Ready to run 되어 있는 Thread 가 지금 선점한 Thread 와 우선순위가 같아야 선점을 푼다.
이 함수를 호출한 스레드가 남은 타임 슬리아스(Time Slace) 를 자동적으로 포기하여 시스템이
다른 스레드를 스케줄 하게 한다. 그런데 시스템에 이 함수를 호출한 스레드와 우선순위가 같거나
그보다 높은 스레드 중에 스케줄 가능 스레드가 없는 경우 Sleep 함수를 호출한 스레드가 다시
스케줄 될 수도 있다.
2. Sleep(1)
Thread 간의 우선순위에 관계없이 다른 Thread 가 Ready to run 상태에 있다면 자신이 쥐고 있던 Thread 선점을 풀고
Ready to run 상태인 Thread 에 CPU 를 넘겨준다.
즉, Context switching 이 이루어 진다.
cf) MSDN
Thread 간 우선순위(Priority) 가 다른 경우에 사용법이 틀려 진다.
1. Sleep(0)
다른 Thread 가 Ready to run 되었다고 해서 자신이 쥐고 있는 CPU의 선점을 풀지 않는다.
Ready to run 되어 있는 Thread 가 지금 선점한 Thread 와 우선순위가 같아야 선점을 푼다.
이 함수를 호출한 스레드가 남은 타임 슬리아스(Time Slace) 를 자동적으로 포기하여 시스템이
다른 스레드를 스케줄 하게 한다. 그런데 시스템에 이 함수를 호출한 스레드와 우선순위가 같거나
그보다 높은 스레드 중에 스케줄 가능 스레드가 없는 경우 Sleep 함수를 호출한 스레드가 다시
스케줄 될 수도 있다.
2. Sleep(1)
Thread 간의 우선순위에 관계없이 다른 Thread 가 Ready to run 상태에 있다면 자신이 쥐고 있던 Thread 선점을 풀고
Ready to run 상태인 Thread 에 CPU 를 넘겨준다.
즉, Context switching 이 이루어 진다.
cf) MSDN