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

本文关键字:服务器 模式 网络服务 网络 多线程 | 更新日期: 2023-09-27 17:47:21

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

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

我还需要能够干净地关闭听力线程,这是我在网上找不到很多考试的东西。

我假设锁定/自动重置事件/线程魔术与异步 BeginAceptTcpClient 和 EndAcceptTcpClient 相结合会让我到达那里,但是当涉及到网络代码时,对我来说一切都已经完成了。所以我必须相信那里有一些模式,我可以遵循,而不会被无数的多线程角落情况完全迷惑,我似乎永远无法做到完美。

谢谢。

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

奇怪的

是,你可能会在计算机科学作业中找到一些东西,CSC 512编程作业4:具有模式的多线程服务器。虽然它C++巫毒教,但对于可以做 C# 的人来说,这个理论是完全可以理解的。

  • 接受器/连接器
  • 监视对象
  • 线程安全接口
  • 包装立面
  • 作用域锁定
  • 策略锁定
  • 反应器
  • 同步/半异步
  • 领导者/追随者

但是,您可以在主页上获得完整的好读物列表。

看看前面的问题:

如何最大程度地减少 tcp 服务器应用程序中使用的线程数?

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