【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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:451837

评论

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

移动云基于 TiDB 实现 serverless 数据库服务

TiDB 社区干货传送门

某业务升级5.0解决慢SQL问题

TiDB 社区干货传送门

实践案例 故障排查/诊断

Flink + TiDB,体验实时数仓之美

TiDB 社区干货传送门

实践案例

TiKV 集群部署 注意事项

TiDB 社区干货传送门

TiDB 数据库开发规范

TiDB 社区干货传送门

写冲突场景下的悲观/乐观事务模型选择

TiDB 社区干货传送门

实践案例

如果你的 kubelet 运行在容器中,使用 local static provisioner 要注意一个问题

TiDB 社区干货传送门

AskTUG 论坛迁移实战:Discourse 从 PostgreSQL 到 MySQL 到 TiDB

TiDB 社区干货传送门

【TiDB 4.0 新 Feature 原理及实践】 Dashboard 触手体验

TiDB 社区干货传送门

几分钟读懂 TiDB HTAP

TiDB 社区干货传送门

NewSQL 在微众银行核心批量场景的应用

TiDB 社区干货传送门

实践案例

基于阿里云ECS部署的TiDB 2.1.14升级到4.0.0-rc实践

TiDB 社区干货传送门

管理与运维 安装 & 部署

从抓包发现并解决 Navicat 编辑 TiDB 视图报错的问题

TiDB 社区干货传送门

实践案例 TiDB 底层架构

【TiDB 最佳实践系列】开发 Java 应用使用 TiDB 的最佳实践

TiDB 社区干货传送门

实践案例

SQL只是CRUD?

TiDB 社区干货传送门

TiDB 底层架构

【TiDB DevCon 2020】金融专题论坛演讲视频汇总

TiDB 社区干货传送门

【TiDB 最佳实践系列】乐观锁事务

TiDB 社区干货传送门

实践案例

从内容角度看看TUG小伙伴都在关注些啥

TiDB 社区干货传送门

版本测评

TiDB at ZaloPay Infrastructure & Lesson Learned

TiDB 社区干货传送门

PD 分配 TS 的 QPS 上限揭密

TiDB 社区干货传送门

tidb开发规范

TiDB 社区干货传送门

【精选实践】TiDB 在马上消费金融核心账务系统归档及跑批业务下的实践

TiDB 社区干货传送门

实践案例

招募体验官!构建实时数仓 - 当 TiDB 遇见 Pravega

TiDB 社区干货传送门

TiDB 5.0 异步事务特性体验——基于X86和ARM混合部署架构

TiDB 社区干货传送门

【热门问题】关于近期签名过期的处理合集

TiDB 社区干货传送门

常见问题排查之 -- DM 主键冲突的原因及排查思路

TiDB 社区干货传送门

TIDB 3.0.5 性能压测

TiDB 社区干货传送门

数据库架构选型

TiDB 集群的可用性详解及 TiKV Label 规划

TiDB 社区干货传送门

TiDB 底层架构

tiup目录冲突检测不健全导致的节点被destroy问题以及解决

TiDB 社区干货传送门

日本大型移动支付软件 PayPay 的 TiDB 迁移实践

TiDB 社区干货传送门

【技术专题】如何做数据库选型?

TiDB 社区干货传送门

实践案例

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