高手请进:
我知道异步方法是启用了另外的一个线程执行,也就是说一个线程变成了两个并行执行(不知道对不对,还是有个线程专门管理异步)。还有异步页面的时候,同样是调用异步方法,这会就从一个线程变没了,这个的话我想是肯定有个线程专门托管所有的一步页面方法的。还有这里面牵涉到线程池。
我想知道 :
1.异步方法调用和异步页面的具体原理,线程池之间整个过程是怎样执行的
2.异步方法调用和异步页面的原理上的区别
*恩恩怎么用我会,要的是原理,内部到底是怎样工作的呢??
(关系肯定很复杂,有的话发个链接就行,找了好久就是没有找到相关资料,谢谢了)
异步有两种,一种是计算密集型,另一种是 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
我是菜鸟。
看了你上面写的,根据我的理解,你所说的“异步方法是启用了另外的一个线程执行”这是在服务器端执行的呀。而“异步页面”是传说中的“Ajax”请求吗,如果是,这是在客户端的呀。这两个没啥比较的吧。
不知道我说的是否理解了你要表达的,路过,呵呵。
简单点说,就是IIS收到请求后,会从线程池中获取一条线程用于处理请求,如果处理请求的方法是用I/O异步的模式,用于处理请求的线程就会被归还回线程池,从而用于其它请求;当异步I/O完成后,进程会从线程池中再获取一条线程用于处理请求结果,其实就是将结果发送回客户端。