ASP.NET教程之.NET 4.0利用Task、Continuation和Future来取代ThreadPool仓酷云
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到net网页编程编译器那么简易。.NET4.0中供应一个新版的线程池(threadpool)。除功能改良和新的负载平衡功效以外,新的线程池还同意您利用Task。一个Task是一个轻量的事情单位,相似您利用ThreadPool.QueueUserWorkItem办法创立的事情项。可是和匿名的事情项分歧,Task对象供应了壮大的API。您能够捕捉Task.StartNew办法前往的对象,以此来利用这些API。这个办法和Thread相似,承受一个界说了事情内容的托付对象或匿名办法。与线程对象的完全功效相似,Task对象开释出一些办法,可让线程守候义务完成。这些办法是Wait,WaitAny和WaitAll,后两个办法能够承受一系列的义务。您能够选择无穷期的守候,或在一段工夫以后超时。守候时代,挪用Wait办法的线程会被堵塞。假如堵塞其实不切合您的请求,您可使用Continuation。这里所说的Continuation是指布置在一个或多个义务终了以后实行的操纵。您能够供应一个托付,并利用ContinueWith,ContinueWithAll或ContinueWithAny三个办法来创立这类后置的义务。您能够屡次挪用这些办法以创立一系列的操纵。Cancellation是.NET今朝没法优秀撑持的一个方面。如今没有很好的举措从线程池中删除不必要的义务,并且线程的作废是一件十分伤害的事变。在.NET4.0中,义务的作废成了中心功效。假如一个义务还没有入手下手就被作废,那末它会当即从行列中移除。假如这个义务已入手下手了,那末还必要一个操纵来共同举行。实践实行义务的托付必要按期反省IsCancellationRequested属性,并给出无效的回复。义务另有另外一个之前的.NET所没有的功效,它撑持“父子”干系。这同意一个庞大的义务被支解为几个小部分,可是仍是被视为单个逻辑操纵。这点为义务作废等操纵供应了伟大的便当。当一个父义务被作废时,您能够选择让一切的子义务同时被作废。Future是一个异步实行某个办法的义务。在必要失掉办法的了局时,Future对象会反省这个办法是不是完成了。办法实行终了后这个了局会被前往,至于没有实行终了的情形下就要依据完成来决意了。比方,读取Future对象的Value属性会招致线程被堵塞至办法实行终了。与其他义务类似,您也能够会见IsCompleted属性,大概挪用Wait,ContinueWith和Cancel办法。这些新功效使.NET中的Future对象比书籍上形貌的加倍壮大,乃至已不单单是一个本来假想的Future对象了。恰是由于云云,.NET4.0的Future已被从头定名为Task<T>,个中T为前往值的范例。值得一提的是,.NET中的Task其实不强迫为线程平安的操纵。这里没有做过任何回护,比方在一个盘算导数的Future对象中也能够改动全局变量。这意味着一般锁和对象具有划定规矩仍旧是失效的。不外您能够尽量地制止这类情况,只需独有地利用不成变对象便可。有关Task的更多信息,你能够参考DanielMoths的“新Task范例的先容”和StephenToub的“ContinueWith所带来的有效笼统”。检察英文原文:ReplacingtheThreadPoolwithTasks,Continuations,andFutures本文出自:http://www.infoq.com/cn/news/2009/02/Tasks
net网页编程的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
页:
[1]