gpt4 book ai didi

C# Tcp 通信线程池与异步调用

转载 作者:可可西里 更新时间:2023-11-01 02:52:09 31 4
gpt4 key购买 nike

我有一个 C# 应用程序,它监听传入的 TCP 连接并从先前接受的连接接收数据。请帮助我是否使用 Threadpool 或 Async 方法来编写程序?请注意,一旦连接被接受,它不会关闭它并继续从该连接接收数据,同时它接受更多连接

最佳答案

当代码运行时间少于半秒并且没有大量会阻塞线程的 I/O 时,线程池线程的效果最佳。这与您描述的情况完全相反。

此处强烈指示使用 Socket.BeginReceive()。在操作级别和框架上都经过高度优化,您的程序使用单个线程来等待所有 挂起的读取完成。扩展以处理数千个事件连接是非常可行的。

干净地编写异步代码可能非常困难,您通常在线程池线程上运行的方法中使局部变量成为类的字段的变量。您需要一个状态机来跟踪连接状态。您将从 C# 版本 5 中提供的 async/await 支持中受益匪浅,它允许您将这些状态变量转回局部变量。您在 this answer 中找到的小 wrapper 或 this blog post会有很大帮助。

关于C# Tcp 通信线程池与异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20676538/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com