程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在DELPHI中用線程排序

在DELPHI中用線程排序

編輯:Delphi

在數據處理量很大的情況下,如何在數據處理的同時響應用戶操作?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;
interface
usesClasses;//TThread類在Classes中被定義。
type
PSortArray=TSortArray;
TSortArray=array.[0..MaxIntdivSize
Of(Integer)-1]ofInteger;
{此處定義了TsortThread類}
TSortThread=class(TThread)
Private
{在TSortThread類中定義了如下幾個私有變元}
FSortArray:PSortArray;
FSize:Integer;
FA,FB,FI,FJ:Integer;
Protected
{類TSortThread超越了類Tthread的Execute方法}
procedure Execute;override;
{類TsortThread添加了一個Sort方法}
procedure Sort(varA:arrayofInteger);
public
{類TSortThread超越了類Tthread的構造方法}
constructorCreate(varSortArray:arrayofInteger);
end;
implementation
constructorTSortThread.Create(varSortArray:arrayofInteger);
begin
FSortArray:=@SortArray;
FSize:=High(SortArray)-Low(SortArray)+1;
FreeOn Terminate:=True;
inheritedCreate(False);
end;
{當線程開始時,Execute方法將被調用。}
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處加入usesmysort,在執行排序的地方加入TQuickSortthread.Create(SortArray),其中SortArray為一實際的數組。

這樣就可以用線程實現排序,在排序過程中,用戶不必等到排序結束就可以執行其它操作。這種用多線程實時響應用戶操作方法在涉及大量數據處理的應用程序中顯得尤為重要

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved