PLINQ利用代码执行平台的计算能力
发布日期:2010/12/9 15:57:36     点击率:     
[导读] 这些子查询就可以同时执行。实际上,你使用的处理器周期不是少了,而是更多了,当然好处就是你可以更早得到结果,请阅读“并行处理不会让你的应用程序变得更快”了解更多关于多线程应用程序的行为。..

    商业应用程序,只要LINQ查询涉及到多个子查询时,PLINQ就像金子一样发光,如果你要连接本地数据库某张表中的行和另一个远程数据库某张表中的行,PLINQ将非常有用,在这种情况下,LINQ必须在每个数据源上独立运行子查询,然后调和结果,PLINQ将会把这些子查询分配给多个处理器核心,这些子查询就可以同时执行。实际上,你使用的处理器周期不是少了,而是更多了,当然好处就是你可以更早得到结果,请阅读“并行处理不会让你的应用程序变得更快”了解更多关于多线程应用程序的行为。
  并行处理不会让你的应用程序变得更快
  关于多线程应用程序最常见的一个误解是,应用程序线程越多,运行速度就越快,多启动一个线程并不会导致Windows给你的应用程序更多的处理周期,它只是把这些周期划分给更多线程了,实际上,在单处理器计算机上,开启多线程只会让你的应用程序变得更慢。
  多线程只是让你的应用程序响应更快,但它仍然要等待其它阻塞任务完成先,不过在等待期间,你可以利用多线程应用程序的特点让其它线程做一些别的事情。在单核机器上,如果线程未被阻塞,多个线程只能相互争夺有限的处理周期。
  多核处理器改变了这种状况,在多核环境中,你可以让Windows给你的应用程序分配更多的处理周期,你不需要阻塞线程,所有线程都在它们自己的核心上执行。并行扩展提供了编程结构,允许你告诉.NET框架应用程序那些部分可以并行执行。
  即使在多核机器上,PLINQ也并不总是并行的查询,有两个原因,一是你的应用程序并行运行不会总是更快,第二个原因是,即使你有一个抽象层管理你的线程,在并行处理时总会出现脚步不一致的情况,PLINQ会检查一些不安全的条件,如果检测到就不会进行并行查询。我会指出PLINQ不会检查的问题和条件,但使用PLINQ出了问题只有你自己负责处理。

    商业应用程序,只要LINQ查询涉及到多个子查询时,PLINQ就像金子一样发光,如果你要连接本地数据库某张表中的行和另一个远程数据库某张表中的行,PLINQ将非常有用,在这种情况下,LINQ必须在每个数据源上独立运行子查询,然后调和结果,PLINQ将会把这些子查询分配给多个处理器核心,这些子查询就可以同时执行。实际上,你使用的处理器周期不是少了,而是更多了,当然好处就是你可以更早得到结果,请阅读“并行处理不会让你的应用程序变得更快”了解更多关于多线程应用程序的行为。
  并行处理不会让你的应用程序变得更快
  关于多线程应用程序最常见的一个误解是,应用程序线程越多,运行速度就越快,多启动一个线程并不会导致Windows给你的应用程序更多的处理周期,它只是把这些周期划分给更多线程了,实际上,在单处理器计算机上,开启多线程只会让你的应用程序变得更慢。
  多线程只是让你的应用程序响应更快,但它仍然要等待其它阻塞任务完成先,不过在等待期间,你可以利用多线程应用程序的特点让其它线程做一些别的事情。在单核机器上,如果线程未被阻塞,多个线程只能相互争夺有限的处理周期。
  多核处理器改变了这种状况,在多核环境中,你可以让Windows给你的应用程序分配更多的处理周期,你不需要阻塞线程,所有线程都在它们自己的核心上执行。并行扩展提供了编程结构,允许你告诉.NET框架应用程序那些部分可以并行执行。
  即使在多核机器上,PLINQ也并不总是并行的查询,有两个原因,一是你的应用程序并行运行不会总是更快,第二个原因是,即使你有一个抽象层管理你的线程,在并行处理时总会出现脚步不一致的情况,PLINQ会检查一些不安全的条件,如果检测到就不会进行并行查询。我会指出PLINQ不会检查的问题和条件,但使用PLINQ出了问题只有你自己负责处理。

更多推荐
© 2019 兰州微亿网络科技有限公司版权所有   陇ICP备14001630号-4 

甘公网安备 62010202000838号

 
XML