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
Posted by six605
,