首页 新闻 会员 周边 捐助

异步与线程池原理

0
悬赏园豆:50 [已解决问题] 解决于 2010-05-14 18:14

高手请进:

  我知道异步方法是启用了另外的一个线程执行,也就是说一个线程变成了两个并行执行(不知道对不对,还是有个线程专门管理异步)。还有异步页面的时候,同样是调用异步方法,这会就从一个线程变没了,这个的话我想是肯定有个线程专门托管所有的一步页面方法的。还有这里面牵涉到线程池。

我想知道 :

 1.异步方法调用和异步页面的具体原理,线程池之间整个过程是怎样执行的

  2.异步方法调用和异步页面的原理上的区别

*恩恩怎么用我会,要的是原理,内部到底是怎样工作的呢??

(关系肯定很复杂,有的话发个链接就行,找了好久就是没有找到相关资料,谢谢了)

问题补充: 之前没有表达清楚: 我说的是方法的异步回调,和IHttpAsyncHander这种异步页面
LittlePeng的主页 LittlePeng | 老鸟四级 | 园豆:3445
提问于:2010-05-10 17:38
< >
分享
最佳答案
0

异步有两种,一种是计算密集型,另一种是 I/O 密集型。

计算密集型:多线程、主要耗费 CPU。如,我们可以使用线程池或者用 System.Threading.Thead。

I/O 密集型:不一定是多线程,如 System.IO 命名空间下的很多类,它们都有 BeginXXX 和 EndXXX 之类的签名的函数。另外 System.Net 下的网络操作等。

更详细的可以阅读 Jeffer Richter 的 《CLR via C#》(中文《.NET 框架程序设计》)和 MSDN。

http://msdn.microsoft.com/en-us/library/kztecsys(v=VS.100).aspx

http://msdn.microsoft.com/en-us/library/ms228969(v=VS.100).aspx

收获园豆:50
周巍 | 小虾三级 |园豆:735 | 2010-05-11 13:40
.NET 框架程序设计 看完了,没有这部分内容啊。clr via C#没看完,看了一下,最后有部分,好像第三版写的很多,先好好看看,谢谢了:)
LittlePeng | 园豆:3445 (老鸟四级) | 2010-05-11 22:21
其他回答(2)
0

我是菜鸟。

看了你上面写的,根据我的理解,你所说的“异步方法是启用了另外的一个线程执行”这是在服务器端执行的呀。而“异步页面”是传说中的“Ajax”请求吗,如果是,这是在客户端的呀。这两个没啥比较的吧。

不知道我说的是否理解了你要表达的,路过,呵呵。

Astar | 园豆:40805 (高人七级) | 2010-05-10 17:49
是我表达不清楚:是异步回调和ihttpAsyncHandler这个异步页面,就是在长时间的io操作的时候将线程返回线程池,等待io回应之后继续执行,可以提高并发。谢谢了:)
支持(0) 反对(0) LittlePeng | 园豆:3445 (老鸟四级) | 2010-05-10 18:45
0

简单点说,就是IIS收到请求后,会从线程池中获取一条线程用于处理请求,如果处理请求的方法是用I/O异步的模式,用于处理请求的线程就会被归还回线程池,从而用于其它请求;当异步I/O完成后,进程会从线程池中再获取一条线程用于处理请求结果,其实就是将结果发送回客户端。

Launcher | 园豆:45050 (高人七级) | 2010-05-11 09:46
奥,没明白我的意思啊,这些我都知道,我要实现原理啊:),谢谢了
支持(0) 反对(0) LittlePeng | 园豆:3445 (老鸟四级) | 2010-05-11 21:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册