usleep – приостановка работы потока
Синтаксис:
#include < unistd.h >
int usleep (useconds_t usec);
Аргументы:
useconds_t usec – время задержки в микросекундах
Возвращаемое значение:
0 - если истекло время приостановки, указанное в аргументе функции,
-1 - если приостановка была прервана сигналом
Описание:
Функция usleep приостанавливает работу потока, в котором она была вызвана, на указанное в аргументе время в микросекундах или до поступления сигнала по которому вызывается функция обработки сигналов или программа завершает свою работу.
Если разрешающая способность системных часов меньше чем 1 микросекунда и указанный интервал не кратен разрешающей способности, то он будет округлен до большего значения, кратного разрешающей способности.
Продолжительность остановки потока управления не может быть меньше указанного времени, если остановка не была прервана сигналом. Однако время приостановки может быть больше, указанного времени из-за накладных расходов или если в момент окончания приостановки работал более приоритетный поток.
Приостановка потока с помощью функции usleep () не оказывает влияния на обработку сигналов
Пример:
В примере с помощью функции usleep () приостанавливается работа программы на одну миллисекунду пять раз.
#include < stdio.h > //Для printf и puts
#include < unistd.h > ////Для usleep
int main (void)
{
int MyTik=0; //Счетчик приостановок работы
//Вывод сообщения о приостановке работы
puts (“Остановка работы на 5 миллисекунд”);
//Цикл на пять тактов
while (MyTik<5)
{
//Вывод оставшегося времени до возобновления работы
printf (“ Осталось %d мсек.\n”,5-MyTik);
//Приостановка работы на 1 миллисекунду
usleep (1000);
//Увеличение на 1 счетчика приостановок
MyTik++;
}
//Вывод сообщения о возобновлении работы
puts (“Работа возобновлена”);
return 0;
}
| |
Результат:
Остановка работы на 5 миллисекунд:
Осталось 5 мсек.
Осталось 4 мсек.
Осталось 3 мсек.
Осталось 2 мсек.
Осталось 1 мсек.
Работа возобновлена
|
Смотри так же:
sleep,
nanosleep,
usleep.
|