пересматривание, “как Вы используете aio и epoll вместе”

после обсуждения в том, Как Вы используете AIO и epoll вместе в единственном цикле событий?.

В Linux существует на самом деле 2 "aio" API. Существует POSIX aio (aio_* семейство функций), включен в glibc, и libaio разработал, я верю Redhat (?), io_* семейством.

Первый позволяет регистрацию запросов уведомления через aio_sigevent aiocb участник. Это может быть легко интегрировано с ppoll ()/pselect () циклы событий. Если Вы хотите интегрировать POSIX aio с epoll () затем, необходимо перевести сигнал в событие на макете fd (канал, возможно) и прислушаться к нему с epoll при ловле сигнала или классическим способом или с ppoll/select. То, насколько безопасный предпочтительный вариант (нормальный sighandlers), зависит от приложения. И возможно на epoll, но я не полностью осведомлен о его внутренностях. Я могу безопасно предположить, что, если у меня есть epoll, основывал приложение, и я хочу добавить POSIX aio поддержка затем, я завинчен? Это было моим вопросом.

Вторая реализация AIO, libaio - может использоваться действительно с eventfd () (структура iocb наличие aio_resfd участника, который, как ожидают, будет нулем или eventfd для поставки результатов AIO). Но это не книгой. Указанный POSIX, который является.

Я мечтаю обо мне являющийся *пользователь BSD, где все ясно. У Вас есть AIO POSIX и kqueue () поддержка событий AIO. Совершенно прозрачный. Как много других вещей.

11
задан Community 23 May 2017 в 12:07
поделиться