Я разрабатываю программу C в Linux, где у меня будет два потока. Один основной поток - event_processor_thread, который выполняет основную обработку функции. Второй поток - поток event_dispatcher, всегда работающий в фоновом режиме, запись и считывание с нескольких интерфейсов в реальном времени (без блокировки async i/o)Зачем использовать writefds в select? Как их использовать на практике?
Я провел некоторое исследование в сети и нашел, что лучшие способы реализации неблокирующая разъем ввода/вывода может быть достигнуто с помощью
- libevent
select()
Я выбрал последнее, так как его легче, и я буду иметь на границах наиболее 4 считываемых из/сог это к.
Понятно, что механизмы прослушивания/чтения используются с использованием readfds
, но я не уверен, как использовать writefds
! Если я поместил свои данные из event_processor_thread в разделяемую память и попросил этот поток диспетчера событий прочитать это из разделяемой памяти и написать с помощью send()
, выберете сами позаботиться о передаче данных в сокет? Вот почему мне нужно использовать writefds
в select()
?
Приносим извинения, если мои вопросы не ясны, то, что я в основном хочу, это иметь неблокирующий поток ввода-вывода для отправки событий в/из потока процессора событий во внешний интерфейс. Любые материалы в этом отношении высоко оценены. Благодаря!
Как бы вы реализовали базовый цикл событий? http://stackoverflow.com/questions/658403/how-would-you-implement-a-basic-event-loop – HAL
Обратите внимание, что подход libevent более переносим на разные платформы. – Ztyx