CS 기초/Operating System
Sleep() 함수는 정확히 입력 시간만큼의 Sleep을 보장하진 못한다.
woohyeon
2023. 2. 4. 00:37
반응형
C의 Sleep() 함수는 입력으로 받은 시간만큼 호출 스레드를 멈추게 한다.
Sleep() 함수는 호출 스레드를 Running 상태에서 Suspend 상태로 만든다. 이 상태에선 cpu에 의해 스케줄링 될 수 없다. 입력 시간이 지나면 해당 스레드는 다시 cpu에 의해 스케줄링 되어 실행될 수 있는 상태(ready to run)상태가 된다. 스케줄링은 OS 상태, 스케줄링 우선순위에 따라 바로 될 수도 그렇지 않을 수도 있다.
간단하게 요약하면 Sleep 함수는 호출 스레드를 입력 시간동안 멈췄다가 곧바로 실행을 보장해주는 함수가 아닌, 말 그대로 입력 시간 동안 실행될 수 없는 상태로 만들고, 그 이후에 다시 실행될 수 있는 상태로 만들어 주는 함수이다.
https://www.youtube.com/watch?v=Js1HSwUurpw&list=PLXvgR_grOs1DGFOeD792kHlRml0PhCe9l&index=2
https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep