在DELPHI中用執行緒排序

2021-04-02 21:51:53 字數 2178 閱讀 4271

在資料處理量很大的情況下,如何在資料處理的同時響應使用者操作?windows95/98和windowsnt作為多執行緒的多工作業系統,其排程單元是執行緒,即執行緒是系統分配處理器時間資源的基本單元,所以我們可以利用執行緒實現在處理大批量資料的同時響應使用者操作。

delphi作為乙個優秀的開發平台,對開發多執行緒應用程式提供了強有力的支援,即可直接利用32位windows環境提供的win32api介面函式createthread,也可利用delphi中提供的beginthread函式。在下面例子中,正是使用了delphi提供的tthread類。 

一.基本的方法如下: 

1.從tthread類派生乙個新類。(建立tsortthread類) 

2.定義新類的create方法。 

3.定義新類的execute方法,並在execute方法中插入執行緒執行時執行的**。 

4.引用類方法建立例項。 

二.例子的詳細**及說明: 

首先,新建乙個單元,儲存為mysort.pas.在此單元中,我們建立了乙個tsortthread類,它從tthread類中繼承而來,所以當我們在程式中建立這個類的乙個例項時,也就是建立了乙個新的執行緒。 

接著,在該類中定義乙個sort方法,用來對陣列進行排序,同時tsortthread類超越了tthread類的構造方法create和execute,在execute方法中,呼叫了對陣列進行排序的sort方法。具體**如下: 

unitmysort; 

inte***ce

usesclasses;//tthread類在classes中被定義。 

type

psortarray=tsortarray; 

tsortarray=array.[0..maxintdivsize 

of(integer)-1]ofinteger; 

tsortthread=class(tthread) 

private

fsortarray:psortarray; 

fsize:integer; 

fa,fb,fi,fj:integer; 

protected

procedure execute;override; 

procedure sort(vara:arrayofinteger); 

public 

constructorcreate(varsortarray:arrayofinteger); 

end; 

implementation

constructortsortthread.create(varsortarray:arrayofinteger); 

begin

fsortarray:=@sortarray; 

fsize:=high(sortarray)-low(sortarray)+1; 

freeon terminate:=true; 

inheritedcreate(false); 

end; 

procedure tsortthread.execu 

te; 

begin

sort(slice(fsortarray,fsize)); 

end; 

procedure tsortthread.sort(vara:arrayofinteger); 

var 

i,j,t:integer; 

begin

for i:=high(a)downto low(a) do 

for j:=low(a)to high(a)-1 do 

if a[j]>a[j+1] then

begin

t:=a[j]; 

a[j]:=a[j+1]; 

a[j+1]:=t; 

if terminated then exit; 

end; 

end; 

end

最後,在使用者應用程式的implementation處加入use**ysort,在執行排序的地方加入tquicksortthread.create(sortarray),其中sortarray為一實際的陣列。這樣就可以用執行緒實現排序,在排序過程中,使用者不必等到排序結束就可以執行其它操作。這種用多執行緒實時響應使用者操作方法在涉及大量資料處理的應用程式中顯得尤為重要。

在DELPHI中用執行緒排序

在資料處理量很大的情況下,如何在資料處理的同時響應使用者操作?windows95 98和windowsnt作為多執行緒的多工作業系統,其排程單元是執行緒,即執行緒是系統分配處理器時間資源的基本單元,所以我們可以利用執行緒實現在處理大批量資料的同時響應使用者操作。delphi作為乙個優秀的開發平台,對...

在Delphi中用XSLT轉換xml檔案格式

uses xmldoc,xmlintf function transform xmlcontent string xslcontent string widestring var xml ixmldocument xsl ixmldocument begin xml loadxmldata xmlc...

在Delphi中用XSLT轉換xml檔案格式

uses xmldoc,xmlintf function transform xmlcontent string xslcontent string widestring var xml ixmldocument xsl ixmldocument begin xml loadxmldata xmlc...