阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

RAD Studio XE7 提供了针对 Object Pascal 和 C++ 的任务并行库

  • 2014-11-10
  • 本文字数:747 字

    阅读完需:约 2 分钟

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

XE7 并行编程库的核心是 task 和 future 。它们同时提供了接口( ITask IFuture )和类( TTask TFuture )供用户使用。这和.NET 的 Task 和 Task类是一样的。

当处理不连续的操作时,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 个有文档,而文档也只是一行文字描述。虽然对免费或者开源的库来说,有时也是可以接受的,但是对于一个现代的商业产品,却是很少见的。

查看英文原文: A Task Parallel Library for Object Pascal and C++


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-11-10 10:451851

评论

发布
暂无评论
发现更多内容

“吹Kotlin协程的,可能吹错了,谈谈我认为的高级Android开发到底应该是怎样的

android 程序员 移动开发

“我是培训 + 外包出来的,先收藏了

android 程序员 移动开发

阿里云EMAS发布套餐订阅云服务

移动研发平台EMAS

【 Flutter 手势探索】我的第二本小册来了,嵌入式音视频方向

android 程序员 移动开发

【- Flutter 桌面篇 -】 FlutterUnit win版闪亮登场,android入门基础

android 程序员 移动开发

【Java转Android】33,高级Android开发面试解答之线程篇

android 程序员 移动开发

{Android}一行代码起飞,2021年百度Android面试真题

android 程序员 移动开发

“终于懂了” 系列,android面试简历模板

android 程序员 移动开发

「Android高工面试之旅」疫情失业裸面失败后,深入分析

android 程序员 移动开发

【Android高级架构师系统学习文章】Android基础-Activity全方位解析

android 程序员 移动开发

【Flutter 专题】117 图解 Dismissible 滑动清除 Widget

android 程序员 移动开发

【Flutter桌面篇】Flutter&Windows应用尝鲜,flutter框架缺点

android 程序员 移动开发

[译]掌握Kotlin中的标准库函数_ run、with、let,搞懂开源框架设计思想真的这么重要吗

android 程序员 移动开发

_ Dart 里的类型系统,android自定义控件开发入门与实战

android 程序员 移动开发

【Flutter 专题】117 图解 Dismissible 滑动清除 Widget(1)

android 程序员 移动开发

_Android 项目中 shape 标签的整理和思考,面试官不讲武德

android 程序员 移动开发

“新常态”下的Android程序员要面对哪些压力,终于有人把安卓程序员必学知识点全整理出来了

android 程序员 移动开发

「安卓高级架构师」教你一种更清晰的Android架构,android原生开发技术

android 程序员 移动开发

[译][2,安卓应用开发项目

android 程序员 移动开发

“阿里钉钉“Android 岗无缘二面,有幸内推进入“美团“送外

android 程序员 移动开发

【Flutter 专题】126 图解自定义两侧对齐 ACETabBar 标签导航栏

android 程序员 移动开发

[译]内存泄露的八种花样,快速从入门到精通

android 程序员 移动开发

Logback基本使用

平凡人生

【 FlutterUnit 食用指南】 开源篇,Android自定义View详解

android 程序员 移动开发

【AAC 系列三】深入理解架构组件,androidjetpack视频

android 程序员 移动开发

{Android}面对最近的话题,kotlin库

android 程序员 移动开发

「大厂Android面试解析」20道面试灵魂拷问题,论程序员成长的正确姿势

android 程序员 移动开发

【Flutter 专题】120 Flutter & 腾讯移动通讯 TPNS,腾讯Android面试

android 程序员 移动开发

【Java转Android】58,讲的太清楚了

android 程序员 移动开发

“我是培训 + 外包出来的(1),flutter与android混合开发

android 程序员 移动开发

【Java转Android】29,真的已经讲烂了

android 程序员 移动开发

RAD Studio XE7提供了针对Object Pascal和C++的任务并行库_C++_Jonathan Allen_InfoQ精选文章