Я запускаю полностью действующее приложение сокета IOCP TCP. Сегодня я думал о проекте Critical Section, и теперь у меня есть один бесконечный вопрос в моей голове: глобальный или критический раздел для каждого клиента? Я пришел к этому, потому что, как я вижу, нет смысла использовать несколько рабочих потоков, если каждый поток зависит от одного замка, не так ли? Я имею в виду ... теперь я не вижу проблемы с производительностью с 100 одновременными клиентами, но что, если было 10000?Дизайн критической секции IOCP
Мой общий ресурс предназначен для каждой предварительно распределенной структуры, поэтому каждый клиент имеет свой собственный контекст ввода-вывода, сокет и прочее. Не существует доли ресурсов между клиентами, поэтому я думаю, что это еще один момент для использования на клиентской CS. Я использую один поток accept и 8 (процессоры * 2) рабочих потоков. Эти приложения в основном разработаны для небольших (< 1KB) пакетов, но иногда для потоковой передачи файлов.
Возможно - ответ зависит от большого количества информации, специфичной для вашей проблемы и конкретной для вашего дизайна. –