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