Namespaces
Variants

thrd_sleep

From cppreference.net
헤더 파일에 정의됨 <threads.h>
int thrd_sleep ( const struct timespec * duration,
struct timespec * remaining ) ;
(C11 이후)

현재 스레드의 실행을 최소한 duration 이 가리키는 TIME_UTC 기반 지속 시간이 경과할 때까지 차단합니다.

무시되지 않는 signal 이 수신되면 sleep이 더 일찍 재개될 수 있습니다. 이러한 경우, remaining NULL 이 아닐 경우, 남은 시간이 remaining 이 가리키는 객체에 저장됩니다.

목차

매개변수

duration - 대기할 지속 시간에 대한 포인터
remaining - 인터럽트 시 남은 시간을 저장할 객체에 대한 포인터. NULL 일 수 있으며, 이 경우 무시됨

반환값

0 성공적인 슬립 시, - 1 시그널 발생 시, 오류 발생 시 다른 음수 값.

참고 사항

duration remaining 는 동일한 객체를 가리킬 수 있으며, 이는 시그널 이후 함수를 재실행하는 것을 단순화합니다.

실제 수면 시간은 타이머 정밀도로 반올림되며 스케줄링 및 컨텍스트 스위칭 오버헤드 때문에 요청된 시간보다 길어질 수 있습니다.

이 함수의 POSIX 동등물은 nanosleep 입니다.

예제

#include <threads.h>
#include <time.h>
#include <stdio.h>
int main(void)
{
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
    thrd_sleep(&(struct timespec){.tv_sec=1}, NULL); // 1초간 대기
    printf("Time: %s", ctime(&(time_t){time(NULL)}));
}

출력:

Time: Mon Feb  2 16:18:41 2015
Time: Mon Feb  2 16:18:42 2015

참조문헌

  • C17 표준 (ISO/IEC 9899:2018):
  • 7.26.5.7 The thrd_sleep 함수 (p: 281)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.26.5.7 The thrd_sleep 함수 (p: 385)

참고 항목

현재 타임 슬라이스를 양보합니다
(함수)
C++ documentation for sleep_for