interruble sleep

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

interruble sleep

Сообщение IMB »

Доброго дня!
Имеется некоторый бесконечный цикл выполняющие некоторую работу с определённой периодичностью:

Код: Выделить всё

while (!stop) {
    do_work();
    sleep(timeout);
}

Пока периодичность исчисляется единицами секунд всё более нормально, но предположим периодичность стала несколько десяток секунд.
Отсюда возник вопрос - существует ли стандартная функция сна с выходом по сигналу или окончанию установленного интервала, этакий аналог wait_event_hrtimeout из linux?
Конечно можно изобразить цикл вида, но это пустая трата ресурсов:

Код: Выделить всё

do {
    sleep(1);
    count++;
} while (!stop || count < timeout);

Спасибо.
Спасибо сказали:
yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: interruble sleep

Сообщение yoshakar »

Посмотрите в сторону стандартной функции setitimer() [это современная замена старинной функции alarm(), которая ныне depricated].
Спасибо сказали: