听多个套接字:select与multithreading

服务器需要监听来自多个套接字(10-20)的input数据。 在一些初始化之后,这些套接字被创build并且不改变(即,没有新的套接字被接受,并且在服务器的生命周期中没有一个被期望closures)。

一种select是在所有套接字上select() ,然后处理每个套接字的传入数据(即路由到正确的处理函数)。

另一种select是每个套接字打开一个线程,让每个线程recv()处理input。

(第一个选项有设置超时的好处,但在这种情况下这不是问题,因为所有的套接字都非常活跃)。

假设如下:Windows服务器,有足够的内存,20MB(对于20个线程)是一个非问题,这些选项中的任何一个预计会比另一个更快?

你的应用程序中没有太多内容。 通常,使用每个套接字线程比异步方法更容易,因为它是一个更简单的整体结构,更容易维护状态。