thread_sleep_for

thread_sleep_for (스레드 슬립)

이 함수는 현재 스레드의 실행을 지정된 시간 동안 최소한 중지해요. std::this_thread::sleep_for는 C++11부터 사용할 수 있으며, 시간 단위를 자유롭게 지정할 수 있는 chrono::duration을 받아요. 스케줄링이나 시스템 상황에 따라 실제 대기 시간은 요청한 시간보다 길어질 수 있어요.

출처: cppreference

본문

<thread> 헤더에 정의됨
template < class Rep , class Period > void sleep_for ( const std :: chrono :: duration < Rep , Period >& sleep_duration ); (C++11부터)

현재 스레드의 실행을 지정된 sleep_duration 동안 최소한 중지해요.

이 함수는 스케줄링이나 리소스 경합 지연 때문에 sleep_duration보다 더 오래 블록될 수 있어요.

표준은 지속 시간을 측정할 때 안정 시계(steady clock)를 사용하도록 권장해요. 구현이 시스템 시계를 대신 사용하면 대기 시간이 시계 조정에 민감해질 수도 있어요.

매개변수 (Parameters)

sleep_duration - 잠들 시간 duration

반환값 (Return value)

(없음)

예외 (Exceptions)

실행 중 clock, time_point 또는 duration에서 발생한 모든 예외 (표준 라이브러리가 제공하는 clock, time point, duration은 절대 던지지 않아요.)

예제 (Example)

#include <chrono>
#include <iostream>
#include <thread>
 
int main()
{
    using namespace std::chrono_literals;

    std::cout << "Hello waiter\n" << std::flush;

    const auto start = std::chrono::high_resolution_clock::now();
    std::this_thread::sleep_for(2000ms);
    const auto end = std::chrono::high_resolution_clock::now();
    const std::chrono::duration<double, std::milli> elapsed = end - start;

    std::cout << "Waited " << elapsed << '\n';
}

가능한 출력 (Possible output):

Hello waiter
Waited 2000.13 ms

같이 보기 (See also)

sleep_until (C++11) 지정된 시점까지 현재 스레드의 실행을 중지해요 (함수) [edit]

더 알아보기 (Learn more)

cppreference