Spec-Zone.ru › C

thrd_sleep

Определено в заголовке <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); // sleep 1 sec
    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)

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/thread/thrd_sleep

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API