处理队列中或每个接收到的数据包上的UDP数据包

时间:2012-05-29 15:28:10

标签: c#

我有一个UDP“服务器”,它接收UDP数据包并处理它们。

我现在实现它的方式,每当我收到一个数据包,并在某个线程池线程上处理每个数据包时,我都会引发一个事件。处理相当简单,我怀疑它比进来的数据包速度快得多。

我现在有另一个应用程序,其中数据包的速率可以更高,我想知道一般情况下是否更好地拥有数据包队列,并以更大批量的方式处理数据包,而不是每次收到活动都会举起活动。

你对这件事有什么看法吗?

1 个答案:

答案 0 :(得分:1)

好吧,如果你期待很多数据包,那么在新线程中处理每个数据包可能不是一个很好的选择。您可以制作生产者/消费者系统。您的UDP数据包接收模块将是生产者,它将生成数据包(推入某种队列),然后您可以让消费者读取数据包并进行处理。这将是更快,更可扩展的选项,您可以运行多个消费者线程来处理数据包。

如果可以,最好以批量方式处理数据包。