Основы программирования в Linux
Шрифт:
2. Функция
3.
Как и в серверных функциях, клиент получает назад результаты от сервера с помощью трех функций, обслуживающих множественные результаты поисков.
1. Данная клиентская функция запускается для ожидания ответа сервера. Она открывает канал клиента только для чтения и затем повторно открывает файл канала только для записи. Чуть позже в этом разделе вы поймете почему.
2. Далее приведена основная операция
3. И
Второй дополнительный вызов
применяется для защиты от ситуации гонок, когда серверу необходимо быстро откликаться на несколько запросов клиента,
Для того чтобы стало понятнее, рассмотрим такую последовательность событий:
1. Клиент пишет запрос к серверу.
2. Сервер читает запрос, открывает канал клиента и отправляет обратно ответ, но приостанавливает выполнение до того, как успеет закрыть канал клиента.
3. Клиент открывает канал для чтения, читает первый ответ и закрывает свой канал.
4. Далее клиент посылает новую команду и открывает клиентский канал для чтения.
5. Сервер возобновляет работу, закрывая свой конец клиентского канала.
К сожалению, в этот момент клиент пытается считать из канала ответ на свой следующий запрос, но
Разрешив клиенту открыть канал как для чтения, так и для записи, и устранив тем самым необходимость повторного открытия канала, вы избежите подобной ситуации гонок. Учтите, что клиент никогда не пишет в канал, поэтому нет опасности считывания ошибочных данных.
Резюме, касающееся приложения
Вы разделили приложение, управляющее базой данных компакт-дисков, на клиентскую и серверную части, что позволило разрабатывать независимо пользовательский интерфейс и внутреннюю технологию работы с базой данных. Как видите, четко определенный интерфейс базы данных дает возможность каждому важному элементу приложения наилучшим образом использовать машинные ресурсы. Если пойти чуть дальше, можно было бы заменить реализацию с помощью каналов на сетевой вариант и применить выделенный компьютер для сервера базы данных. В главе 15 вы узнаете больше об организации сети.
Газлайтер. Том 31
31. История Телепата
Фантастика:
боевая фантастика
попаданцы
альтернативная история
фэнтези
рейтинг книги
Том 12. Курт Воннегут
Фантастика:
научная фантастика
рейтинг книги
Эзотерическое целительство
4. Трактат о семи лучах
Религия и эзотерика:
эзотерика
рейтинг книги
Перри Родан
Фантастика:
космическая фантастика
рейтинг книги
О маленьких рыбаках и больших рыбах. Наш аквариум
Детские:
детская проза
рейтинг книги
Князь Медведев. Дилогия
Медведев
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Основы общей психологии
Мастера психологии
Научно-образовательная:
психология
рейтинг книги
Россия распятая (Книга 1)
Проза:
русская классическая проза
рейтинг книги