Delphi xe7並行編程快速入門

來源:互聯網
上載者:User

標籤:http   xe7   dia   手機   threading   loop   針對   ons   使用   

http://blog.csdn.net/henreash/article/details/41315183

現在多數裝置、電腦都有多個CPU單元,即使是手機也是多核的。但要在開發中使用多核的優勢,卻需要一些技巧,花費時間編寫額外的代碼。好了,現在可以使用Delphi做並行編程了。

在Delphi、C++ Builder和RAD Studio XE7中,有一個簡化並行運行任務的庫,叫做並行編程庫。

並行編程庫在System.Threading單元中,其中提供了很多有用的特性,可方便的應用在已有項目和新項目中。提供了大量便利的重載函數,可同時支援C++和Object Pascal。

這些特性包括易用的針對迴圈的並行運算,以及對運行任務、join任務(等待其他線程完成)、等待一組任務等操作提供支援的大量進階特性。支援這些功能的是一個自我管理的線程池(基於CPU數量)。

為了示範使用並行庫的簡易程度,我們寫一個計算質數的範例。

function IsPrime (N: Integer): Boolean;

var

 Test: Integer;

begin

 Result := True;

 for Test := 2 to N - 1 do

   if (N mod Test) = 0 then

   begin

     Result := False;

     break; {jump out of the for loop}

   end;

end;

擷取從1到X的質數個數的典型演算法是順序的迴圈檢查其中的每個數,將總數記錄在一個變數中(這裡是一個整數Tot)。

const

 Max = 50000; // 50K

 

for I := 1 to Max do

 begin

   if IsPrime (I) then

     Inc (Tot);

 end;

使用新的並行庫,可把for迴圈用類函數TParallel.For替代,並傳遞一個匿名方法。

另外為避免多線程衝突,可以調用TInterlocked.Increment。

TParallel.For(1, Max, procedure (I: Integer)

 begin

   if IsPrime (I) then

     TInterlocked.Increment (Tot);

 end);

有哪些改進?

使用System.Diagnostics單元的TStopWatch類可以方便的擷取每種迴圈的已耗用時間。即使在2核虛擬機器中運行,標準迴圈用時415ms,而並行只需192ms。在Mac上時間從382ms降到90ms。

最讓人喜愛的地方是,作為語言和架構的一部分,可非常容易的加入到現有代碼中。

在開發原生代碼的時候可以利用多核裝置(包括行動裝置)的優勢。然而,在行動裝置上過多運行多線程會消耗更多電量。

Samples

其他並行編程庫的範例可見Delphi和C++內建的Conways遊戲範例:

C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\RTL\Parallel Library

C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\CPP\RTL\Parallel Library

不知道你感覺怎麼樣,我已經使用並行庫將我的舊程式提速了,編程快樂。

Delphi xe7並行編程快速入門(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.