У меня есть сетевая клиентская библиотека, которую я собираю, которая читает/записывает в некоторые сетевые сокеты.Отличительные типы дескрипторов файлов в epoll
Существует один поток, который выполняет сетевой ввод-вывод и отвечает на запросы от открытого клиентского API. Эти клиентские запросы API должны быть выведены из очереди FIFO.
Для того, чтобы поток получил запрос, когда мой основной цикл заблокирован на epoll_wait Я думаю, что я должен использовать eventfd, который я могу добавить с помощью epoll_ctl.
Итак, вопрос в том, как я могу различать событие, перенесенное в мою очередь FIFO и сетевой ввод-вывод, если epoll просто уведомляет EPOLLIN?
EDIT: Я должен добавить, что я не хочу хранить событие fd в элементе данных, а скорее использовать член ptr. Полагаю, мне нужно сохранить fd где-то внутри этой структуры.
Могу ли я просто проверить, не вызвано ли инициируемое событие = мой файловый дескриптор событий и, следовательно, читать из моего fifo, а если оно не равно, то это должно быть сетевое событие? Это безопасно? или существует оптимальный подход.
Спасибо, не знаю, как я пропустил это. Сейчас кажется очевидным – Matt