|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。LINQ(LanguageIntegratedQuery)是VisualStudio2008中的领武士物。借助于LINQ手艺,我们可使用一品种似SQL的语法来查询任何情势的数据。今朝为止LINQ所撑持的数据源有SQLServer、XML和内存中的数据汇合。开辟职员也能够利用其供应的扩大框架增加更多的数据源,比方MySQL、Amazon乃至是GoogleDesktop。一样平常来说,这类查询语句的一个主要特性就是能够并行化实行。固然有些情形下并行大概会带来一些成绩,但这类情形十分少见。如许也就瓜熟蒂落地引出了PLINQ这个并行处置的LINQ类库。
PLINQ原名为ParallelLINQ,撑持XML和内存中的数据汇合。实行于远程服务器上的查询语句(比方LINQtoSQL)明显没法完成这个功效。
将LINQ语句转换为PLINQ语句极其复杂——只必要在查询语句中From子句所指定的数据源的最初增加.AsParallel()便可。随后Where、OrderBy和Select子句将主动改成挪用这个并行的LINQ版本。
据MSDNMagazine先容,PLINQ能够以三种体例实行。第一种是管道处置:一个线程用来读取数据源,而其他的线程则用来处置查询语句,两者同步举行——固然这个单一的消耗线程大概其实不那末简单与多个临盆线程同步。不外如果可以细心设置好负载均衡的话,仍旧会极年夜地削减内存占用。
第二种形式叫做“stopandgo”,用于处置了局集必要被一次前往时(比方挪用ToList、ToArray或对了局排序)的情形。在这类形式下,将顺次完成各个处置历程,并将了局一致前往给消耗线程。这个形式在功能大将优于第一种形式,由于它省往了用来坚持线程同步所消费的开支。
最初一种办法叫做“invertedenumeration”。该办法其实不必要完成搜集到一切的输入,然后在单一的线程中处置,而是将终极挪用的函数经由过程ForAll扩大传送到每一个线程中。这是今朝为止最快的一种处置形式,不外这必要传送到ForAll中的函数是线程平安的,且最好不包括任何lock之类的互斥语句。
如果PLINQ中恣意的一个线程抛出非常,那末一切的其他线程将会被停止。如果抛出了多个非常,那末这些非常将被组分解一个MultipleFailuresException范例的非常,但每一个非常的挪用仓库仍会被保存。
检察英文原文:MoreonParallelLINQ
来自:http://www.infoq.com/cn/news/2007/10/PLINQ-MSDN
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 |
|