Namespaces
Variants

thrd_sleep

From cppreference.net
Определено в заголовочном файле <threads.h>
int thrd_sleep ( const struct timespec * duration,
struct timespec * remaining ) ;
(начиная с C11)

Блокирует выполнение текущего потока как минимум до тех пор, пока TIME_UTC -ориентированный интервал времени, на который указывает duration , не истечёт.

Сон может быть прерван досрочно, если получен signal , который не игнорируется. В таком случае, если 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 Функция thrd_sleep (стр: 281)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.26.5.7 Функция thrd_sleep (стр: 385)

Смотрите также

освобождает текущий квант времени
(функция)
C++ documentation для sleep_for