在c#应用程序中维护大量开放套接字

时间:2011-05-27 12:32:20

标签: c# performance sockets concurrency

我正在用C#编写一个应用程序,我希望维护大量的开放套接字连接(tcp),并能够响应来自所有这些连接的数据。现在,正常的事情(afaik)将是在所有这些上调用BeginRead,但据我所知,BeginRead生成一个线程并坐下来等待该线程中的数据,并且我已经读过线程没有当使用大量的时候,它们的扩展性会很好。虽然我可能错了,如果是这样的话,请告诉我。

这可能听起来很愚蠢,但我想要的是能够维持尽可能多的开放式套接字连接(就像我的机器/操作系统允许的那样),同时仍然能够对来自其中任何一个的数据做出反应尽可能快地使用尽可能少的系统资源。

我想到的是将所有这些列表放在某种列表中,然后在循环中运行单个线程检查新数据并对新数据进行操作(如果有的话),尽管我我认为像这样的循环最终会炸掉我的cpu(因为循环中没有任何东西阻塞)。有没有办法(简单与否,我不介意进入一些更复杂的算法来解决这个问题),我能做到这一点吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)