Асинхронная работа с диском, libaio
Добрый день.
Пишу высокопроизводительный сервер, в данный момент дисковый ввод вывод. Для асинхронного ввода и вывода на диск использую libaio. Проблема в том, что интерфейс для работы с асинхронным вводом выводом (io_submit и io_getevents) не унифицированы с интерфейсом асинхронного доступа к сокетам. То есть - события асинхронного дискового интерфейса нельзя принимать через epoll. Это ведет к тому, что мне приходится чередовать системные вызовы epoll и io_getevents, что усложняет код. Вопрос - нельзя ли как нибудь унифицировать эти системы? Второй вопрос - есть ли аналог асинхронного ввода вывода в солярисе и фряхе? Именно аналога libaio. librt (aio_read, aio_write) не подходит, поскольку нет поллинга, и обычно реализуется через треды.