Тема 14. Неблокирующий и асинхронный ввод-вывод

Содержание

  1. Буферы
    1. Операции
    2. Чтение и запись
    3. Байтовые буферы
    4. Типизированные буферы
  2. Каналы
    1. Иерархия каналов
    2. Байтовые каналы
    3. Файловые каналы
      1. Файлы отображаемые в память
      2. Блокировки
    4. Сетевые каналы
    5. Неблокирующий ввод-вывод
    6. Асинхронные каналы

Слайды

HTML

Примеры

zip

Домашнее задание 12. HelloNonblockingUDP

  1. Реализуйте клиент и сервер, взаимодействующие по UDP, используя только неблокирующий ввод-вывод.
  2. Класс HelloUDPNonblockingClient должен иметь функциональность аналогичную HelloUDPClient, но без создания новых потоков.
  3. Класс HelloUDPNonblockingServer должен иметь функциональность аналогичную HelloUDPServer, но все операции с сокетом должны производиться в одном потоке.
  4. В реализации не должно быть активных ожиданий, в том числе через Selector.
  5. Обратите внимание на выделение общего кода старой и новой реализации.
  6. Бонусный вариант. Клиент и сервер могут перед началом работы выделить O(число рабочих потоков) памяти. Выделять дополнительную память во время работы запрещено.