thread_sleep_until
thread_sleep_until (지정된 시각까지 현재 스레드의 실행을 차단)
이 페이지는 std::this_thread::sleep_until 함수에 대해 설명해요. 이 함수는 현재 스레드를 지정된 시각까지 일시 중지시켜요. 시계와 시간 유형에 따라 정밀하게 동작하며, 표준 라이브러리의 시계를 사용하면 예외를 던지지 않아요.
출처: cppreference
본문
헤더 및 선언
template < class Clock , class Duration > void sleep_until ( const std :: chrono :: time_point < Clock , Duration >& sleep_time ); |
(C++11부터) |
설명
지정된 sleep_time에 도달할 때까지 현재 스레드의 실행을 차단해요.
Clock은 Clock 요구 사항을 충족해야 해요. std :: chrono :: is_clock_v < Clock >이 false이면 프로그램은 ill-formed예요. (C++20부터)
표준은 sleep_time에 연결된 시계를 사용할 것을 권장하며, 이 경우 시계의 조정이 고려될 수 있어요. 따라서 차단 시간은 호출 시점의 sleep_time - Clock :: now ()보다 길거나 짧을 수 있는데, 이는 조정 방향과 구현이 이를 반영하는지에 따라 달라져요. 또한 프로세스 스케줄링이나 리소스 경합 지연으로 인해 sleep_time이 지난 후까지 차단될 수도 있어요.
매개변수
| 매개변수 | 설명 |
|---|---|
sleep_time |
차단할 시각 |
반환값
(없음)
예외
Clock이나 Duration이 던지는 모든 예외가 전달돼요. (표준 라이브러리가 제공하는 시계와 시간은 절대 던지지 않아요.)
예제
#include <chrono>
#include <iostream>
#include <thread>
auto now() { return std::chrono::steady_clock::now(); }
auto awake_time()
{
using std::chrono::operator""ms;
return now() + 2000ms;
}
int main()
{
std::cout << "Hello, waiter...\n" << std::flush;
const auto start{now()};
std::this_thread::sleep_until(awake_time());
std::chrono::duration<double, std::milli> elapsed{now() - start};
std::cout << "Waited " << elapsed.count() << " ms\n";
}
가능한 출력:
Hello, waiter...
Waited 2000.17 ms
같이 보기
| 함수 | 설명 |
|---|---|
sleep_for (C++11) |
현재 스레드의 실행을 지정된 시간 동안 중지해요 (함수) |
C 문서의 thrd_sleep |
C 언어에서의 대응 함수 문서 |