Суббота, 23.09.2017, 04:53
Приветствую Вас, Гость
Главная » 2014 » Январь » 13 » Мультиплексированный ввод-вывод часть вторая
09:56
Мультиплексированный ввод-вывод часть вторая

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


Популярная аренда илососа в проверенной фирме clean-experts.ru.
Просмотров: 247 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: