gpt4 book ai didi

c# - 大量线程在线程池中处于等待状态,导致性能问题

转载 作者:行者123 更新时间:2023-11-30 20:49:34 25 4
gpt4 key购买 nike

我的应用程序通过 http 连接到大量客户端,从这些客户端下载数据并在收到这些结果时处理数据。每个请求都在一个单独的线程中发送,这样主线程就不会一直被占用。

我们已经开始遇到性能问题,这些问题似乎主要与 ThreadPool 中的大量线程有关,这些线程只是在等待从这些请求中取回数据。我知道在 .NET 4.5 中我们有 asyncawait 来解决相同类型的问题,但我们仍在使用 .NET 3.5。

关于在不同线程中发送这些请求的最佳方式是什么,但不要让该线程保持事件状态,而它所做的只是继续等待请求返回,有什么想法吗?

最佳答案

您可以在 .NET 3.5 中使用异步操作,只是不如在 .NET 4.5 中方便。大多数 IO 方法都有一个 BeginX/EndX 方法对,它们是 X 方法的异步等价物。这称为 Asynchronous Programming Model (APM) .

例如,您可以使用 Stream.BeginReadStream.EndRead 而不是 Stream.Read

实际上,.NET 4.5 中的许多异步 IO 方法只是对 Begin/End 方法的包装。

关于c# - 大量线程在线程池中处于等待状态,导致性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23450970/

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