每个线程或更多线程更多TCPClients

时间:2015-03-29 20:10:40

标签: c# multithreading threadpool tcpclient

我需要对我们正在开发的项目提供一些指导。触发后,我的程序需要通过TCP联系1,000台设备并交换大约200字节的信息。所有客户端都在专用网络上无线连接。程序大部分时间都处于空闲状态,但随后需要尽快发送这些消息。我想出了两种可能的方法:

方法1 使用线程池来建立许多工作线程,让这些线程处理1000个对话。一个线程处理一个会话直到完成。然后将调整线程池中的线程数以充分利用资源。

方法2 将使用许多线程来处理每个线程的多个对话。例如,一个线程进程将打开10个套接字连接启动对话,然后使用异步方法等待响应。通信完成后,将联系新设备。

方法2看起来更有效,因为操作不必等待服务器设备响应。它还可以节省开始停止所有这些线程的开销。

我是否朝着正确的方向前进?我错过或不考虑什么?

1 个答案:

答案 0 :(得分:2)

有一种完善的方法可以解决这个问题。只需使用异步IO。根本不需要维护任何线程。在IO正在进行时,Async IO不使用任何线程。

感谢await这样做很容易。

select / poll模型在.NET中已过时。