相关疑难解决方法(0)

为什么Thread.Sleep()是如此CPU密集型?

我有一个带有这个pseduo代码的ASP.NET页面:

while (read)
{
   Response.OutputStream.Write(buffer, 0, buffer.Length);
   Response.Flush();
}
Run Code Online (Sandbox Code Playgroud)

请求此页面的任何客户端都将开始下载二进制文件.此时一切正常,但客户端的下载速度没有限制,因此将上述代码更改为:

while (read)
{
   Response.OutputStream.Write(buffer, 0, buffer.Length);
   Response.Flush();
   Thread.Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)

速度问题现在已经解决,但是在测试中有100个并发客户端一个接一个地连接(每个新连接之间延迟3秒),当客户端数量增加时CPU使用率增加,并且当70到80个并发客户端CPU达到100%时CPU使用率增加并且任何新连接都被拒绝.其他机器上的数字可能不同,但问题是为什么Thread.Sleep()是如此CPU密集型,有没有办法加速客户端没有CPU上升?

我可以在IIS级别执行此操作,但我需要从应用程序内部进行更多控制.

c# asp.net performance multithreading

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

asp.net ×1

c# ×1

multithreading ×1

performance ×1