Asp.net的异步处理模型-Asp.net的异步如何提高服务器的吞吐量
2008-11-22 15:50
302 查看
public class Handler1 :IHttpAsyncHandler
public class AsyncHandler : IAsyncResult
{
{
{
{
{
{ throw new NotImplementedException(); }
{
{ return false; }
{
{ return _completed; }
{
{
Thread.Sleep(5000);//模拟IO
_context.Response.Write("<p>Completion IsThreadPoolThread is " + Thread.CurrentThread.IsThreadPoolThread + "</p>\r\n");
_context.Response.Write("Hello World from Async Handler!" + Thread.CurrentThread.ManagedThreadId);
_completed = true;
_callback(this);
}
}
这是Asp.net中的异步处理。Asp.net的异步处理目的就是要搞高服务器的接受请求的处理能力,但有一点不明白
使用异步处理时,在BeginProcessRequest时,会将处理当前请求的线程放回到线程池中。放回到线程池中的此
线程继续接受新的请求,但是在StartAsyncWork这个时候,同样会从当前线程池中获取一个线程继续处理这个IO,
这样并不能提高服务器的吞吐量,相反会在线程间切换浪费CPU时间和资源,Asp.net异步处理就没有意义了
(其实是有意义的)。
问题:Asp.net的异步能够提高服务器的吞吐量,
但是我始终无法理解他是怎么提高其处理能力的。
public class AsyncHandler : IAsyncResult
{
{
{
{
{
{ throw new NotImplementedException(); }
{
{ return false; }
{
{ return _completed; }
{
{
Thread.Sleep(5000);//模拟IO
_context.Response.Write("<p>Completion IsThreadPoolThread is " + Thread.CurrentThread.IsThreadPoolThread + "</p>\r\n");
_context.Response.Write("Hello World from Async Handler!" + Thread.CurrentThread.ManagedThreadId);
_completed = true;
_callback(this);
}
}
这是Asp.net中的异步处理。Asp.net的异步处理目的就是要搞高服务器的接受请求的处理能力,但有一点不明白
使用异步处理时,在BeginProcessRequest时,会将处理当前请求的线程放回到线程池中。放回到线程池中的此
线程继续接受新的请求,但是在StartAsyncWork这个时候,同样会从当前线程池中获取一个线程继续处理这个IO,
这样并不能提高服务器的吞吐量,相反会在线程间切换浪费CPU时间和资源,Asp.net异步处理就没有意义了
(其实是有意义的)。
问题:Asp.net的异步能够提高服务器的吞吐量,
但是我始终无法理解他是怎么提高其处理能力的。
相关文章推荐
- 如何通过ASP.NET页面重启服务器
- MattPowell介绍了如何在服务器端使用异步Web方法,来创建高性能的 Microsoft ASP.NET Web 服务
- 如何让提高ASP.NET性能
- asp.net 提高网站速度及如何利用缓存
- 不使用ASP.NET中的服务器控件将如何上传文件?
- ASP.Net随想-服务器控件的页面请求模型
- ASP.NET - 如何:对照取值范围验证 ASP.NET 服务器控件
- ASP.NET - 如何:以编程方式验证 ASP.NET 服务器控件
- 如何最大限度提高.net的性能_asp.net技巧
- 如何提高ASP.NET页面载入速度的方法
- asp.net中服务器控件如何添加客户端的js事件?
- asp.net如何把文件上传到另外一台服务器
- 如何实现IEnumerable<T>和IEnumerator接口,一个ASP.NET MVC日志模型的实现
- ASP.Net如何把文件从一台服务器上传到另外一台服务器
- 如何在ASP.NET页面中使用异步任务(PageAsyncTask)
- 如何通过ASP.NET页面重启服务器
- 如何利用缓存提高asp.net网站访问速度
- 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?
- asp.net 2.0页面性能的考虑--异步页面处理模型
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架开发随笔一