Тот факт, что он не зависит от контекста, не должен помешать вам хранить некоторую информацию о состоянии.
Вы можете сохранить контекст (я имею в виду io_context
) и просто использовать его повторно (отправить запрос на чтение и дождаться его - io_getevents
). io_submit
говорит, что отправляет запросы в очередь, поэтому я считаю, что это сохранит порядок операций.
В качестве альтернативы (если вы обнаружите, что io_submit
не сохраняет порядок), вы можете сохранить достаточно состояния, чтобы знать, что операция записи ожидает, и ждать, используя io_getevents
. Тогда чтение будет безопасным.
Надеюсь, я не понял ваш вопрос.
EDIT
Кажется, я сделал неправильно прочитал ваш вопрос . Вы, вероятно, говорите о POSIX aio(7)
. Я говорил об истинном асинхронном вводе / выводе (libaio.h
). POSIX aio обычно реализуется с использованием потоков (какой тип отстой).
В любом случае, если вы можете ждать событий (что, я думаю, вы можете), вы все равно можете сделать это: оставить какое-то состояние для объявления записи ожидающим, а когда кто-то хочет прочитать, дождитесь завершения записи. *