본문 바로가기
CS 기초/Operating System

Sleep() 함수는 정확히 입력 시간만큼의 Sleep을 보장하진 못한다.

by woohyeon 2023. 2. 4.
반응형

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




댓글