马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到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网页编程的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。 |