Pull to refresh

Как делать несколько дел одновременно и в то же время по очереди?

Reading time1 min
Views10K


Продолжаем осваивать курс «Сетевое программирование в UNIX», подготовленный специалистами SkyDNS и компании «Айдеко». Сегодня мы публикуем шестую лекцию.

В прошлый раз мы рассматривали программы, основанные на использовании конечного автомата. Теперь пойдем дальше и расскажем, как «научить» программу в автоматном стиле обрабатывать несколько одновременных соединений в одном процессе/потоке.

Ранее автор курса Александр Патраков уже затрагивал тему обработки более одного клиента одновременно. Тогда он предложил пойти путем создания нескольких процессов. Но этот способ не подходит для астрологического сервера, так как его состояние является общим для нескольких процессов (при использовании потоков такого ограничения нет).

Существует способ обработки более одного клиента одновременно, не основанный на создании множества процессов или потоков. Это цикл обработки сообщений на основе функции select(), которой и посвящена данная лекция.

«Этот способ подходит, если ограничивающим фактором не является производительность процессора или диска, а программа занята, в основном, сетевым вводом-выводом», — поясняет Александр Патраков.

На этом занятии студентам было дано задание добавить к существующей автоматной программе вызов функции select() и тем самым научить ее обрабатывать нескольких клиентов.

Советуем и вам попробовать свои силы! Смотрите видео и не забывайте оставлять комментарии!



Предыдущие лекции:
1. Курс для тех, кто не боится UNIX и C
2. Каждому клиенту по процессу
3. Реализуем протокол или как работают астрологи
4. О том, как читать до конца
5. Программы в автоматном стиле — трудности перевода
Tags:
Hubs:
Total votes 3: ↑2 and ↓1+1
Comments5

Articles

Information

Website
www.ideco.ru
Registered
Founded
2005
Employees
Unknown
Location
Россия