【发布时间】:2023-03-31 13:08:01
【问题描述】:
我正在用 C# 编写服务器。 msdn.microsoft.com 上的异步示例建议如下。
- BeginAccept 监听客户端(并在客户端调用时启动新线程)。
- BeginReceive 以接收来自客户端的数据(并启动一个新线程来执行此操作)。
- BeginSend 回复以向客户端发送数据(并启动另一个线程)。
此时似乎有 4 个单独的线程,从我(可能是幼稚的)的角度来看,实际上只需要 2 个。1 个用于服务器继续监听,1 个用于与客户端的对话。为什么我与客户端的对话需要 3 个线程,因为我必须在发送之前等待回复,而在等待从客户端接收数据时我不会做任何其他事情?
干杯
【问题讨论】:
-
我认为您将线程与异步操作混淆了。
-
附带说明:
Begin*方法是较旧的异步 API - 有一个较新的套接字异步 API -
这个问题密切相关:stackoverflow.com/q/21013751/1768303
标签: c# multithreading sockets