Главная » 2016 » Март » 28 » Мультиплексированный ввод-вывод часть вторая
12:10
Мультиплексированный ввод-вывод часть вторая
Во-первых, процессу приходится постоянно выполнятьоперации ввода-вывода в каком-то произвольном порядке, ожидая, когда егооткрытые дескрипторы файла будут готовы для ввода-вывода. Это плохая конструкцияпрограммы. Во-вторых, было бы намного эффективнее, если бы программамогла засыпать, освобождая процессор для других задач, и просыпаться,только когда один или несколько файловых дескрипторов становятся доступнымидля ввода-вывода.1 Термин ?главный цикл? (mainloop) должен быть знаком любому, кому приходилось писатьG UI-приложения. Например, приложения GNOME используют главный цикл, предоставляемыйGLib — их базовой библиотекой. Главный цикл позволяет отслеживатьи отвечать на несколько событий из одной точки блокировки.Познакомьтесь с мультиплексированным вводом-выводом.Мультиплексированный ввод-вывод (multiplexed I/O) позволяет приложениюодновременно фиксироваться на нескольких файловых дескрипторах и получатьуведомления, когда один из них становится доступным для чтения илизаписи без блокировки. Таким образом, мультиплексированный ввод-выводстановится центральной точкой для приложений, сконструированных на основеприблизительно такого каркаса:1) мультиплексированный ввод-вывод: сообщи мне, когда любой из этих дескрипторовфайла будет готов для ввода-вывода;2) заснуть до тех пор, пока один или несколько файловых дескрипторов не будутготовы;3) проснуться: какие дескрипторы готовы?4) обработать все готовые к вводу-выводу дескрипторы файлов без блокировки;5) вернуться к шагу 1 и начать сначала.В Linux предусмотрено три решения для мультиплексированного ввода-вывода:интерфейсы select, poll и epoll. Здесь мы рассмотрим два первых, а последний,относящийся к более сложным и уникальным для Linux решениям,мы обсудим в следующей статье .
Просмотров: 436 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar