【发布时间】:2010-10-12 21:22:22
【问题描述】:
我有一个 C#.NET 应用程序,它需要通知 4000 到 40,000 台连接的设备同时执行一项任务(或尽可能接近同时执行)。
应用程序运行良好;但是,我对性能并不满意。在一个完美的世界中,一旦我发送命令,我希望看到所有设备同时响应。然而,似乎存在延迟,因为我创建的所有线程都在启动并执行任务。
我使用了 .NET 4.0 ThreadPool,使用自定义线程创建了自己的解决方案,我什至调整了现有的 ThreadPool 以允许一次执行更多线程。
我仍然想要更好的表现,这就是我在这里的原因。有任何想法吗?评论?建议?谢谢。
-肖恩
让我补充一点,应用程序会通知这些“已连接的设备”,它们需要在多播地址上收听音频。
【问题讨论】:
-
这是什么网络?是通过 UDP 多播发送选项吗?
-
是的,告诉成千上万的设备去听一个多播地址上的音频。
-
您有 4,000 到 40,000 个 CPU/内核吗?如果你这样做了,那么你可以同时执行所有线程......但是如果你可以在 UDP 上多播,那为什么还要麻烦线程呢?
-
发送多播数据包只需要 1 个线程。
-
4k 设备听起来是一个足够大的项目,足以证明修改设备(或制作自定义设备)以收听单个“开始音频”通知数据包是合理的。方式,更容易。即使完美的线程和完美的“启动”数据包一个接一个地发送到设备,没有延迟..您仍然在谈论通过网络串行发送的大量数据包以及第一个和最后一个设备之间的大量延迟' 通知(如果音频同步是主要问题)
标签: c# .net multithreading threadpool