Мобильное программирование приложений реального времени в стандарте POSIX

       

Асинхронный ввод/вывод


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

После завершения асинхронной операции ввода/вывода приложению может быть доставлен сигнал.

Жизненный цикл операции асинхронного ввода/вывода включает два этапа:

  • постановка запроса в очередь;
  • выполнение запроса, осуществление ввода/вывода.

Основными операциями асинхронного ввода/вывода являются чтение (aio_read()) и запись (aio_write()) данных.

Функция lio_listio() позволяет за один вызов поставить в очередь список запросов на чтение и/или запись данных.

Для выяснения статуса операций асинхронного ввода/вывода служат функции aio_return() и aio_error().

Ожидающие обработки запросы на асинхронный ввод/вывод можно аннулировать, воспользовавшись функцией aio_cancel().

Согласно стандарту POSIX-2001, списком можно не только инициировать запросы на асинхронный ввод/вывод, но и ожидать их завершения. Для этого служит функция aio_suspend().

Функции sync(), fsync(), fdatasync(), aio_fsync() предназначены для согласования состояния буферизованных и хранимых в долговременной памяти данных, обеспечения целостности данных и файлов.



Содержание раздела