Книга: Системное программирование в среде Windows
Альтернативы портам завершенияввода/вывода
Альтернативы портам завершенияввода/вывода
В главе 9 было показано, как использовать семафор для ограничения количества готовых к выполнению потоков, и этот же метод можно эффективно применять для регулирования пропускной способности в условиях, когда множество потоков соревнуются между собой за право владения ограниченными ресурсами.
Эту же методику мы могли бы применить и в серверах serverSK (программа 12.2) и serverNP (программа 11.3). Все, что для этого требуется — это организовать ожидание перехода семафора в сигнальное состояние после завершения запроса на чтение, выполнение этого запроса, создание ответа и освобождение семафора перед тем, как записать ответ. Такое решение гораздо проще того, которое реализовано в примере с портом завершения ввода/вывода, приведенном в следующем разделе. Единственная проблема состоит в том, что потоков может оказаться очень много, и для каждой из них требуется собственное стековое пространство, что приведет к большому расходу виртуальной памяти. Остроту этой проблемы можно несколько ослабить, тщательно распределяя необходимые объемы стекового пространства. Упражнение 14.6 включает в себя выполнение экспериментов с альтернативным решением подобного рода, а реализация соответствующего примера находится на Web-сайте.
Существует еще одна возможность, которую можно использовать при создании масштабируемых серверов. Выборка пакетов рабочих заготовок (work items) из очереди (см. главу 10) может осуществляться с использованием ограниченного количества потоков. Поступающие рабочие заготовки могут помещаться в очередь одной или несколькими главными потоками, как показано в программе 10.5.
- Альтернативы портам завершенияввода
- 6.4. Альтернативы Internet Explorer
- Управление портами завершения ввода
- Конечные автоматы и альтернативы
- Альтернативы частичным функциям
- 10.1.4. Альтернативы, группировка и ссылки
- 13.4. Альтернативы read() и write()
- Две альтернативы – с вашим продуктом и без него
- Регистры управления портами
- Альтернативы 802.11b
- Рис. 19. USB-клавиатура с USB-портами.
- Какие есть альтернативы?