11

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

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

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

我假设 lock/AutoResetEvents/threading 魔术与 async BeginAceptTcpClient 和 EndAcceptTcpClient 的结合将使我到达那里,但是当涉及到网络代码时,对我来说一切都已经完成了。所以我必须相信我可以遵循一些模式,而不会被无数多线程的极端案例完全混淆,我似乎永远无法做到完美。

谢谢。

4

2 回答 2

12

奇怪的是,您可能会在计算机科学作业CSC 512 Programming Assignment 4: Multi-Threaded Server With Patterns中找到一些东西。虽然它是 C++ 巫术,但对于可以使用 C# 的人来说,这个理论是完全可以理解的。

尽管您可以在主页上获得完整的好读物列表。

于 2008-09-29T15:38:38.013 回答
3

看一下之前的这个问题:

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

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

于 2008-09-29T16:50:05.003 回答