我在 C# 中使用 TcpClient 类。
每次有新的 tcp 连接请求时,通常的做法是创建一个新线程来处理它。并且主线程应该可以随时终止这些处理程序线程。
我对每个处理程序线程的解决方案如下:
1 Check NetworkStream's DataAvailable method
1.1 If new data available then read and process new data
1.2 If end of stream then self terminate
2 Check for terminate signal from main thread
2.1 If terminate signal activated then self terminate
3 Goto 1.
这种轮询方法的问题在于,所有这些处理程序线程都将占用大量的处理器资源,尤其是在这些线程数量巨大的情况下。这使得它非常低效。
有没有更好的方法来做到这一点?