chandrAN2& Ответов: 1

Как работает асинхронная библиотека libevent в случае, если muliple FD готовы к чтению/записи


Допустим, у меня есть 5 сокетов FD(5 событий), добавленных в цикл событий. И нет никакого приоритета, связанного с каким-либо событием, все события равны.

Если все FD доступны для чтения одновременно,

1) в каком порядке вызываются обратные вызовы?
2) Все ли 5 событий обратного вызова будут выполняться один за другим , прежде чем вызов select/epoll будет выполнен циклом событий? (или) наоборот, как после того, как одно событие срабатывает независимо от другого набора FD или нет, снова выполняется вызов epoll/select?
3) Если я хочу сначала обработать определенные FD,если они доступны для чтения/записи, прежде чем приступить к другим FD, возможно ли это в библиотеке lib-event без назначения приоритета событиям?

Что я уже пробовал:

Пробовал с несколькими событиями, но не смог понять точную внутреннюю часть механизма вызова обратного вызова libevent в случае, если несколько FD готовы к чтению/записи.

1 Ответов

Рейтинг:
0

KarstenK

Все события являются независимыми ресурсами системы, поэтому это время сигнализатора, если и когда они срабатывают.

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