brofield,
К сожалению, менталитет мира C # все еще находится в потоке для каждой области соединения. Я ищу способ обработки нескольких подключений в одной коробке Compact Framework / Windows CE и хочу написать свой собственный шаблон Proactor / Reactor (по аналогии с тем, который используется в ACE). Compact Framework, похоже, не поддерживает асинхронное подключение - просто асинхронное чтение и запись. Мне также нужно управлять жестким контролем времени ожидания (мягкое приложение реального времени).
Алан,
Одна из причин реализации схемы проактор / реактор состоит в том, что вам не нужно запускать поток для каждого соединения. Веб-сервер является классическим примером. Занятый сервер может легко иметь сотни активных соединений в любое время. С таким количеством потоков (а я видел реализации, в которых один поток читается, а другой - записывает данные), время, затрачиваемое на переключение контекста, становится значительным. В Windows CE на процессоре ARM с частотой 750 МГц я измерял миллисекунды с пиками до 4 миллисекунд.
Я все еще нахожу, что в большинстве приложений на C # и Java, с которыми я сталкивался, слишком много работающих потоков. Кажется, что решение для всего - начать другой поток. Пример. Eclipse (IDE) использует 44 потока еще до того, как я действительно открою проект. 44 темы ???? делать что именно ??? Поэтому Eclipse такой медленный?