2

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

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

我现在有另一个应用程序,其中数据包的速率可以更高,我想知道一般来说有一个数据包队列是否会更好,并以更大量的方式处理数据包,而不是引发事件每次收到。

你对这个问题有什么想法吗?

4

1 回答 1

1

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

如果可以的话,以批量方式处理数据包总是更好。

于 2012-05-29T18:30:55.933 回答