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)
См. также
|
(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