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

本文关键字:Net 工作 客户端 WebSocket | 更新日期: 2023-09-27 18:22:20

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

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

假设每次数据通过套接字传入时,线程都需要拾取它并对其进行一些处理,那么我是否正确地假设IF所有1000个套接字同时接收数据,然后我将有1000个线程(每个套接字1个线程)来自线程池来从套接字中拾取数据?如果我想打开3000个插座怎么办?

对此的任何澄清都将不胜感激。

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

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

线程池当使用线程池时,您不知道有多少不同的线程将同时处于活动状态。数据被放在队列中,线程池以最快的速度处理它。您可以控制池将使用的线程的最小/最大数量,但池创建/销毁线程的方式未指定。

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

排泄物如果您在同步上下文(例如UI线程)中等待异步接收操作,则除非您抑制同步上下文,否则操作将在同一上下文(UI线程)下继续。在这种情况下,只使用一个线程,接收操作将按顺序排队和处理。