我正在用 C# 编写 TCP 服务器,并且正在使用 BeginXXX 和 EndXXX 方法进行异步通信。如果我理解正确,当我使用 BeginXXX 时,请求将在线程池中处理(当请求准备好时),而主线程继续接受新连接。
问题是如果我在这些 AsyncCallback 之一中执行阻塞操作会发生什么?将阻塞操作作为任务运行会更好吗?任务也使用线程池,不是吗?
用例如下:
主线程设置一个监听套接字,它使用 BeginAccept 接受连接,并开始使用 BeginReceive 监听这些连接。当收到完整的消息时,会根据该消息的内容调用一个函数,在所有情况下,80% 的函数将启动数据库查询/插入/更新。