C#中multithreading网络服务器的模式

我可以遵循设计multithreading服务器的模板/模式/指南吗? 我通过谷歌搜索在网上找不到任何非常有用的东西。

我的程序将启动一个线程来使用TcpListener监听连接。 每个客户端连接都将由它自己的IClientHandler线程处理。 服务器将clientHandler.HandleClient包装在委托中,调用BeginInvoke,然后退出关心它。

我还需要能够干净地关闭监听线程,这是我没有找到很多在线的例子。

我假设将一些lock / AutoResetEvents / threading魔法与异步BeginAceptTcpClient和EndAcceptTcpClient混合在一起会让我在那里,但是当谈到网络代码时,对我而言,这一切都已完成。 所以我不得不相信只有一些模式我可以遵循并且不会被无数的multithreading角落情况完全混淆,我似乎无法完美。

谢谢。

奇怪的是,你可以在计算机科学作业中找到一些东西, CSC 512编程作业4:带模式的multithreading服务器 。 尽管这是C ++伏都教,但对于能够做C#的人来说这个理论是可以理解的。

  • 接受器/连接器
  • 监控对象
  • 线程安全接口
  • 包装外观
  • Scoped Locking
  • 战略锁定
  • 反应堆
  • 半同步/半异步
  • 领导者/追随者

尽管如此,您还可以在主页面上获得完整的阅读清单。

看看上一个问题:

如何最小化tcp服务器应用程序中使用的线程数?

它不是严格的C#特定,但它有一些很好的建议。