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

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

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

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

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

Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
9 875
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

Это кажется очень полезным. Спасибо! Похоже, я сегодня немного почитаю.

James Thigpen 29.09.2008 20:03

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

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

Это не строго специфично для C#, но дает несколько полезных советов.

Другие вопросы по теме