Question

Existe-t-il des modèles / modèles / guides que je peux suivre pour concevoir un serveur multithread? Je ne trouve rien de terriblement utile en ligne dans mes recherches sur Google.

Mon programme va démarrer un thread pour écouter les connexions utilisant TcpListener. Chaque connexion client sera gérée par son propre thread IClientHandler. Le serveur encapsulera clientHandler.HandleClient dans un délégué, appellera BeginInvoke, puis cessera de s'en soucier.

J'ai également besoin de pouvoir arrêter proprement le fil d'écoute, ce que je ne trouve pas souvent en ligne.

Je suppose qu'un mélange de magie lock / AutoResetEvents / threading, combiné aux commandes asynchrone BeginAceptTcpClient et EndAcceptTcpClient m'y conduira, mais pour ce qui est du code de réseau, tout a été fait. Il me faut donc croire que je peux suivre certaines tendances et ne pas me laisser complètement déconcerter par la myriade de cas d'angle multithread que je n'arrive jamais à avoir l'air parfait.

Merci.

Était-ce utile?

La solution

Curieusement, vous pourriez trouver quelque chose sur un devoir en informatique, Programmation CSC 512, affectation 4: Serveur multithread avec modèles . Bien que ce soit C ++ vaudou, mais la théorie est assez compréhensible pour quelqu'un qui peut faire du C #.

Bien que vous puissiez obtenir la liste complète des lectures intéressantes sur la page principale .

Autres conseils

Jetez un coup d'œil à cette question précédente:

Comment minimisez-vous le nombre de threads utilisés dans une application serveur TCP?

Ce n'est pas strictement spécifique à C #, mais il a quelques bons conseils.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top