我编写了一个多线程 Socket Server 应用程序,它接受超过 1000 个并发连接。最近我们遇到了应用程序崩溃;分析转储文件后得知应用程序由于堆损坏而崩溃。我发现以下链接中讨论了相同的问题。
.NET 没有可靠的异步套接字通信? http://support.microsoft.com/kb/947862
并且讨论还提出了 3 个解决方案。
网络应用程序应该对其发布的未完成异步 IO的数量有一个上限。
使用微软 CCR
使用 TPL
由于时间因素,我想坚持#1,但我不清楚如何实现这一点。有人可以给出一个好的起点吗?
还有没有人使用 Async 和 TPL 来解决这个问题?