Delphi 并行程序設(shè)計課件_第1頁
Delphi 并行程序設(shè)計課件_第2頁
Delphi 并行程序設(shè)計課件_第3頁
Delphi 并行程序設(shè)計課件_第4頁
Delphi 并行程序設(shè)計課件_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Delphi 并行程序設(shè)計 之TTask TTask 和 TThread TTask ITask Array of ITask Task.FutureDelphi 并行程序設(shè)計 之TTaskTTask 和 TThread TThread(線程) 是單核時代的產(chǎn)物, 多個Threads 按一定次序輪流占用CPU 時間,執(zhí)行線程過程。 TTask (任務(wù)) 是多核時代的產(chǎn)物, 多個Tasks 占用各自的CPU,相對獨立運行, 所以速度上,比TThread 快。Delphi 并行程序設(shè)計 之TTaskTTask(任務(wù)對象)和 ITask(任務(wù)實例)執(zhí)行一個任務(wù)的方式一】直接運行一個任務(wù),返回值為IT

2、ask型。 TTask.Run()二】創(chuàng)建一個任務(wù)實例,需要的時候執(zhí)行。 var aTask:ITask; /聲明 aTask:=TTask.create(); /創(chuàng)建 aTask.start; /執(zhí)行 Delphi 并行程序設(shè)計 之TTaskTTask.Run()和TTask.Create(); 參數(shù)說明Run(Sender: TObject; Event: TNotifyEvent): ITask; / 參數(shù)為一個對象及事件,返回一個任務(wù)實例Run(const Func: TProc): ITask; /參數(shù)為一個過程名 或者是 一個匿名過程;返回一個任務(wù)實例 以下兩種還沒有嘗試 Run(

3、const Func: TProc; APool: TThreadPool): ITask;Run(Sender: TObject; Event: TNotifyEvent; APool: TThreadPool): ITask;Delphi 并行程序設(shè)計 之TTaskArray of ITask 任務(wù)數(shù)組,或者程任務(wù)隊列Var aTList: Array of ITask;/ 聲明數(shù)組setlength(aTlist,2);/設(shè)置長度aTList0:=TTask.Run();/執(zhí)行任務(wù)一aTList1:=TTask.Run();/執(zhí)行任務(wù)二TTask.WaitForAll(aTList);/

4、等待所有任務(wù)完成TTask.WaitForAny(aTList);/等待任一任務(wù)完成ContinueProcedure;/繼續(xù)執(zhí)行以下過程Delphi 并行程序設(shè)計 之TTaskTTask.FutureVar aFutureValue:IFuture;/聲明 變量名:IFutureaFutureValue:=TTask.Future( / 創(chuàng)建Future任務(wù) Function:string / 字符串型匿名函數(shù) begin sleep(3000); result:=hello; end); /當(dāng)且只有當(dāng) Future 任務(wù)計算完成后才會執(zhí)行以下過程,否則一直等待 Memo1.lines.ad

5、d(aFutureValue.Value);Delphi 并行程序設(shè)計 之TTaskUses 語句中需包含system.Threading;TParallel TParallel.For() TParallel.Join()TParallelTParallel.For() 【一】傳統(tǒng)forVar i,total:integerFor i:=1 to 90000 doBegin inc(total);/自加End;【二】TParallel.forVar total:integer;TParallel.for(1,90000,1,procedure(i:int64)BeginTInterLocked.Increment(total);/鎖定自加End; TParallelTParallel.Join()Join the procedures to run together.var aPL: array of TProc;/聲明一過程數(shù)組setlength(aPL,2);/ 設(shè)置數(shù)組長度aPL0:=WorkOne;/WorkOne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論