Pergunta

Existem modelos/padrões/guias que eu possa seguir para projetar um servidor multithread?Não consigo encontrar nada muito útil on-line em minhas pesquisas no Google.

Meu programa iniciará um thread para escutar conexões usando TcpListener.Cada conexão de cliente será tratada por seu próprio thread IClientHandler.O servidor agrupará clientHandler.HandleClient em um delegado, chamará BeginInvoke e então deixará de se preocupar com isso.

Também preciso ser capaz de desligar o thread de escuta de maneira limpa, algo que não estou encontrando muitos exemplos on-line.

Estou assumindo que alguma mistura de magia de bloqueio/AutoResetEvents/threading combinada com BeginAceptTcpClient assíncrono e EndAcceptTcpClient me levará até lá, mas quando se trata de código de rede, para mim está tudo feito.Portanto, tenho que acreditar que existe algum padrão que posso seguir e não ficar totalmente confuso com a miríade de casos multithread que nunca consigo aperfeiçoar.

Obrigado.

Foi útil?

Solução

Curiosamente, você pode encontrar algo em uma tarefa de ciência da computação, CSC 512 Programação de programação 4: servidor multi-thread com padrões. Ao todo, é o vodu C ++, mas a teoria é bastante compreensível para alguém que pode fazer C#.

Ao todo, você pode obter toda a lista de boas leituras no página principal.

Outras dicas

Dê uma olhada nesta pergunta anterior:

Como você minimiza o número de threads usados ​​em um aplicativo de servidor TCP?

Não é estritamente específico do C #, mas contém alguns bons conselhos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top