Вопрос

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

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

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

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

Это не относится строго к C #, но в нем есть несколько полезных советов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top