Delphi 并行程序设计.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi 并行程序设计

Delphi 并行程序设计 之 TTask TTask 和 TThread TTask ITask Array of ITask Task.Future Delphi 并行程序设计 之 TTask TTask 和 TThread TThread(线程) 是单核时代的产物, 多个Threads 按一定次序轮流占用CPU 时间,执行线程过程。 TTask (任务) 是多核时代的产物, 多个Tasks 占用各自的CPU,相对独立运行, 所以速度上,比TThread 快。 Delphi 并行程序设计 之 TTask TTask(任务对象)和 ITask(任务实例) 执行一个任务的方式 一】直接运行一个任务,返回值为ITask型。 TTask.Run(…) 二】创建一个任务实例,需要的时候执行。 var aTask:ITask; //声明 aTask:=TTask.create(…); //创建 aTask.start; //执行 Delphi 并行程序设计 之 TTask TTask.Run(…)和TTask.Create(…); 参数说明 Run(Sender: TObject; Event: TNotifyEvent): ITask; // 参数为一个对象及事件,返回一个任务实例 Run(const Func: TProc): ITask; //参数为一个过程名 或者是 一个匿名过程;返回一个任务实例 以下两种还没有尝试 Run(const Func: TProc; APool: TThreadPool): ITask; Run(Sender: TObject; Event: TNotifyEvent; APool: TThreadPool): ITask; Delphi 并行程序设计 之 TTask Array of ITask 任务数组,或者程任务队列 Var aTList: Array of ITask;// 声明数组 setlength(aTlist,2);//设置长度 aTList[0]:=TTask.Run(…);//执行任务一 aTList[1]:=TTask.Run(…);//执行任务二 TTask.WaitForAll(aTList);//等待所有任务完成 TTask.WaitForAny(aTList);//等待任一任务完成 ContinueProcedure;//继续执行以下过程 Delphi 并行程序设计 之 TTask TTask.Future Var aFutureValue:IFutureString;//声明 变量名:IFuture值类型 aFutureValue:=TTask.FutureString( // 创建Future任务 Function:string // 字符串型匿名函数 begin sleep(3000); result:=‘hello’; end); //当且只有当 Future 任务计算完成后才会执行以下过程,否则一直等待 Memo1.lines.add(aFutureValue.Value); Delphi 并行程序设计 之 TTask Uses 语句中需包含 system.Threading; TParallel TParallel.For() TParallel.Join() TParallel TParallel.For() 【一】传统for Var i,total:integer For i:=1 to 90000 do Begin inc(total);//自加 End; 【二】TParallel.for Var total:integer; TParallel.for(1,90000,1,procedure(i:int64) Begin TInterLocked.Increment(total);//锁定自加 End; TParallel TParallel.Join() Join the procedures to run together. var aPL: array of TProc;//声明一过程数组 setlength(aPL,2);// 设置数组长度 aPL[0]:=WorkOne;//WorkOne 为一过程名 aPL[1]:=WorkTwo;// TParallel.Join(aPL);//将数组中的过程

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档