注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

XE7并行编程  

2014-12-23 18:12:21|  分类: delphixe7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

RAD Studio XE7的一个主要特性是其并行编程库Parallel Programming Library)。XE7为包括Windows、OS X、iOS和Android在内的多个平台提供了基于任务的并行处理能力。跟Mono不同的是,这组工具为所有的目标平台提供了完全的原生应用。

XE7并行编程库的核心是task和future 。它们同时提供了接口(ITaskIFuture)和类(TTaskTFuture)供用户使用。这和.NET的Task和Task<T>类是一样的。

当处理不连续的操作时,task和future通常是独立使用的。想并行处理一组操作,可以使用封装器 。比如, 如果想并行化一个for循环,可以使用下面这段代码来抽象任务逻辑:

TParallel.For(1, Max, procedure (I: Integer)
    begin
        if IsPrime (I) then
        TInterlocked.Increment (TotalPrimes);
    end);

对于那些不熟悉Object Pascal的人来说,这里的procedure关键字创建了一个匿名函数。这跟VB的Function关键字和C#的箭头语法的行为相似。

请注意TInterlocked.Increment类的用法。这是Windows平台的Interlocked.Increment对应的一个平台无关版本。没有它,TotalPrimes计数可能会由于资源竞争而导致错误。因此,虽然这个库简化了并行编程,但是开发人员仍然需要确保正确地使用它。

并行编程库的一个主要缺点不是代码本身,而是文档。在所提供的18个类和类型中,只有7个有文档,而文档也只是一行文字描述。虽然对免费或者开源的库来说,有时也是可以接受的,但是对于一个现代的商业产品,却是很少见的。

  评论这张
 
阅读(278)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017