выберите () - способные таймеры

выберите (), большой системный вызов. Можно упаковать любое количество дескрипторов файлов, дескрипторов сокета, каналов, и т.д. и уведомляться синхронным способом, когда введенный становится доступным.

Существует ли способ создать interval/oneshot таймер и использовать его с выбором ()? Это сохранило бы меня от наличия нескольких потоков для IO и синхронизации.

10
задан Andrew Klofas 24 February 2010 в 17:38
поделиться

2 ответа

timerfd_create делает именно это. Это довольно недавнее дополнение к ядру Linux, которое, возможно, еще не во всех дистрибутивах.

12
ответ дан 3 December 2019 в 18:33
поделиться

Используйте параметр тайм-аута - сохраняйте события таймера в очереди с приоритетом, проверьте верхнюю элемент и установите время ожидания соответственно - если время ожидания истекло, вы можете проверить, готово ли событие к запуску, запустить событие и продолжить.

По крайней мере, я так делаю.

Обратите внимание, что опрос имеет более приятный интерфейс (в некотором смысле) и может быть более эффективным с большим количеством файловых дескрипторов.

7
ответ дан 3 December 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: