WebSocket客户端如何在.Net中工作?

时间:2014-09-17 23:33:58

标签: c# .net multithreading websocket threadpool

我的问题更多地与WebSockets(在客户端上)如何使用.Net中的线程工作/行为有关,我正在寻找的答案更多的是关于操作系统如何与.Net交互的低级解释线程从它的套接字上从服务器接收数据时。

假设我有一个客户端以异步方式向服务器打开1000个套接字。然后它坐在那里等待更新/事件通过。这些事件可以在不同的时间和频率到达。

假设每次数据都是通过套接字进入的,一个线程需要拿起它并对它做一些工作,我是否正确假设 IF 所有1000个套接字都接收数据同时我将有来自线程池的1000个线程(每个套接字1个线程)从套接字中获取数据?如果我想打开3000个插座怎么办?

非常感谢对此的任何澄清。

1 个答案:

答案 0 :(得分:0)

假设您正在使用.NET Framework library WebSocket,将从ThreadPool(可能是IO完成线程池)的线程返回接收到的数据。

线程池 使用线程池时,您不知道同时有多少个不同的线程处于活动状态。数据放在队列中,线程池尽可能快地通过它。您可以控制它将使用的最小/最大线程数,但未指定池创建/销毁其线程的方式。

以上适用于.NET中的大多数异步操作。

<强> Excpetions 如果您在同步上下文(例如UI线程)中等待异步接收操作,则操作将在相同的上下文(UI线程)中恢复,除非您禁止同步上下文。在这种情况下,将只使用一个线程,接收操作将按顺序排队和处理。