C# 中多线程网络服务器的模式
本文关键字:服务器 模式 网络服务 网络 多线程 | 更新日期: 2023-09-27 17:47:21
设计多线程服务器时,我可以遵循任何模板/模式/指南吗? 通过我的谷歌搜索,我在网上找不到任何非常有用的东西。
我的程序将启动一个线程来侦听使用 TcpListener 的连接。每个客户端连接都将由它自己的 IClientHandler 线程处理。 服务器会将clientHandler.HandleClient包装在一个委托中,调用BeginInvoke,然后停止关注它。
我还需要能够干净地关闭听力线程,这是我在网上找不到很多考试的东西。
我假设锁定/自动重置事件/线程魔术与异步 BeginAceptTcpClient 和 EndAcceptTcpClient 相结合会让我到达那里,但是当涉及到网络代码时,对我来说一切都已经完成了。所以我必须相信那里有一些模式,我可以遵循,而不会被无数的多线程角落情况完全迷惑,我似乎永远无法做到完美。
谢谢。
奇怪的
是,你可能会在计算机科学作业中找到一些东西,CSC 512编程作业4:具有模式的多线程服务器。虽然它C++巫毒教,但对于可以做 C# 的人来说,这个理论是完全可以理解的。
- 接受器/连接器
- 监视对象
- 线程安全接口
- 包装立面
- 作用域锁定
- 策略锁定
- 反应器 半
- 同步/半异步
- 领导者/追随者
但是,您可以在主页上获得完整的好读物列表。
看看前面的问题:
如何最大程度地减少 tcp 服务器应用程序中使用的线程数?
它不是严格特定于 C# 的,但它有一些很好的建议。