-
sleep_for(), yield()개발/C·C++ 2021. 9. 1. 16:43
<thread>를 인클루드하면 사용할 수 있는 sleep_for()과 yield()는 같은 듯 다릅니다.
sleep_for() 함수를 호출한 스레드는 괄호 안의 시간만큼 스레드가 블락(block)됩니다. 블락이 끝나면 해당 스레드는 준비 큐에 들어가서 CPU 스케줄링에 의해 선택되기를 기다려야 합니다.
yield() 함수는 해당 스레드가 블락되지 않고 해당 스레드에 할당된 CPU를 커널에 양도할 수 있도록 사용하는 OS에 힌트를 줍니다. 스레드가 바로 준비 상태가 된다고 볼 수 있죠. 그러므로 yield()는 sleep_for(0ms)와 동일하게 기능합니다. 하지만 굳이 인자를 넘겨야 하는 함수보다는 yield()를 호출하는 게 낫지 않을까 싶습니다.
'개발 > C·C++' 카테고리의 다른 글
split() (0) 2021.09.11 생산자/소비자 패턴에서의 WaitForSingleObject() (0) 2021.09.01 비주얼 스튜디오에서 다른 프로젝트의 파일 참조하기 (0) 2021.08.31 [Rvalue reference] Forcing Move Semantics(4) (0) 2021.08.26 rvalue reference is a reference (0) 2021.08.04