在设计多线程服务器时,是否有我可以遵循的模板/模式/指南?通过我的谷歌搜索,我在网上找不到任何非常有用的东西。
我的程序将启动一个线程以使用 TcpListener 监听连接。 每个客户端连接都将由它自己的 IClientHandler 线程处理。服务器会将 clientHandler.HandleClient 包装在委托(delegate)中,调用 BeginInvoke,然后不再关心它。
我还需要能够干净地关闭监听线程,这是我在网上找不到的很多示例。
我假设锁定/AutoResetEvents/线程魔法与异步 BeginAceptTcpClient 和 EndAcceptTcpClient 的一些组合会让我到达那里,但是当涉及到网络代码时,对我来说它已经完成了。所以我必须相信,我可以遵循一些模式,而不会被我似乎永远无法完美的无数多线程角落案例完全搞糊涂。
谢谢。
最佳答案
奇怪的是,您可能会在计算机科学作业中找到一些东西,CSC 512 Programming Assignment 4: Multi-Threaded Server With Patterns .虽然它是 C++ 巫术,但对于可以使用 C# 的人来说,这个理论是很容易理解的。
- Acceptor/ Connector
- Monitor Object
- Thread Safe Interface
- Wrapper Facade
- Scoped Locking
- Strategized Locking
- Reactor
- Half Sync/Half-Async
- Leaders/Followers
尽管您可以在 main page 上获得完整的好读物列表.
关于c# - C# 中多线程网络服务器的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149163/