C#中的多线程网络服务器的模式

时间:2020-03-06 14:52:47  来源:igfitidea点击:

在设计多线程服务器时是否可以遵循任何模板/模式/指南?我无法通过Google搜索在网上找到任何非常有用的东西。

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

我还需要能够完全关闭侦听线程,这是我在网上找不到很多示例的原因。

我假设将lock / AutoResetEvents / threading魔术与异步BeginAceptTcpClient和EndAcceptTcpClient结合使用将使我到达那里,但是当涉及到网络代码时,对我而言已经完成了。因此,我必须相信,这里有一些我可以遵循的模式,并且不会因我似乎永远无法完美实现的无数多线程转角情况而完全感到困惑。

谢谢。

解决方案

奇怪的是,我们可能会在计算机科学作业,CSC 512编程作业4:带模式的多线程服务器上找到一些东西。虽然它是C ++伏都教,但对于可以使用C#的人来说,该理论是可以理解的。

  • 接受器/连接器
  • 监控对象
  • 线程安全接口
  • 包装立面
  • 范围锁定
  • 分层锁定
  • 反应堆
  • 半同步/半异步
  • 领导者/跟随者

完全可以在主页上获得所有不错的阅读材料清单。

看一下之前的问题:

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

严格来说,它不是Cspecific,但是有一些很好的建议。