Шаблоны для многопоточного сетевого сервера в С#

Существуют ли какие-либо шаблоны/шаблоны/руководства для проектирования многопоточного сервера? Я не могу найти ничего страшного в Интернете через мои поисковые запросы.

Моя программа запустит поток для прослушивания соединений с помощью TcpListener. Каждое клиентское соединение будет обрабатываться собственным потоком IClientHandler. Сервер будет завершать clientHandler.HandleClient в делегате, вызывать BeginInvoke, а затем прекратить заботу об этом.

Мне также нужно иметь возможность полностью отключить прослушивающий поток, что я не нахожу много примеров онлайн.

Я предполагаю, что некоторые комбинации lock/AutoResetEvents/threading magic в сочетании с async BeginAceptTcpClient и EndAcceptTcpClient меня доставят, но когда дело доходит до сетевого кода, для меня все это было сделано. Поэтому я должен поверить в то, что там есть какая-то модель, в которой я могу следовать, а не быть полностью смущенной множеством многопоточных угловых случаев, которые я никогда не могу улучшить.

Спасибо.

Ответ 1

Как ни странно, вы можете найти что-то в задании Computer Science, CSC 512 Назначение программирования 4: Многопоточный сервер с шаблонами. Хотя это С++ voodoo, но теория вполне понятна для тех, кто может делать С#.

Наверху вы можете получить весь список хороших чтений на главной странице .