Шаблоны для многопоточного сетевого сервера в C # - PullRequest
11 голосов
/ 29 сентября 2008

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

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

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

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

Спасибо.

Ответы [ 2 ]

12 голосов
/ 29 сентября 2008

Как ни странно, вы можете найти что-то в задании по информатике, Задание по программированию CSC 512 4: Многопоточный сервер с шаблонами . Хотя это C ++ вуду, но теория вполне понятна для тех, кто умеет делать C #.

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

3 голосов
/ 29 сентября 2008

Взгляните на этот предыдущий вопрос:

Как минимизировать количество потоков, используемых в приложении сервера tcp?

Это не строго C #, но есть хороший совет.

...