【发布时间】:2015-06-02 18:18:23
【问题描述】:
我需要一些关于我们正在开发的项目的指导。触发后,我的程序需要通过 TCP 联系 1,000 台设备并交换大约 200 字节的信息。所有客户端在专用网络上都是无线的。大多数情况下,程序会处于空闲状态,但随后需要尽快发送这些消息。我想出了两种可能的方法:
方法一 使用线程池来建立多个工作线程,并让这些线程处理 1,000 个对话。一个线程处理一个对话直到完成。然后将调整线程池中的线程数以充分利用资源。
方法二 将使用多个线程来处理每个线程的多个对话。例如,一个线程进程会打开 10 个套接字连接开始对话,然后使用异步方法等待响应。随着通信完成,将联系新设备。
方法 2 看起来更有效,因为操作不必等待服务器设备响应。它还可以节省开始停止所有这些线程的开销。
我是否朝着正确的方向前进?我错过了什么或没有考虑什么?
【问题讨论】:
-
我不认为线程架构会成为瓶颈,而是一般来说网络适配器和 WLAN 的争用。因此,您应该尝试以最小化(徒劳的)争用和重传的方式联系客户端。请特别注意您的 Windows 版本和适配器驱动程序。
标签: c# multithreading threadpool tcpclient