데이터 처리량이 많은 경우 데이터를 처리하는 동안 사용자 작업에 어떻게 대응해야 합니까? Windows95/98 및 WindowsNT는 다중 스레드 다중 작업 운영 체제입니다. 스케줄링 단위는 스레드입니다. 즉, 스레드는 시스템이 프로세서 시간 자원을 할당하는 기본 단위이므로 스레드를 사용하여 대규모 배치를 처리할 수 있습니다. 사용자 작업에 응답하면서 데이터를 처리합니다.
뛰어난 개발 플랫폼인 DELPHI는 멀티스레드 애플리케이션 개발을 위한 강력한 지원을 제공합니다. 32비트 Windows 환경에서 제공되는 Win32API 인터페이스 기능인 CreateThread를 직접 사용할 수도 있고, DELPHI에서 제공하는 BeginThread 기능을 사용할 수도 있습니다. 다음 예제에서는 DELPHI에서 제공하는 TThread 클래스를 사용했습니다.
하나. 기본적인 방법은 다음과 같습니다.
1. Tthread 클래스에서 새 클래스를 파생시킵니다. (TSortThread 클래스 생성)
2. 새 클래스의 Create 메서드를 정의합니다.
3. 새로운 클래스의 Execute 메소드를 정의하고, Execute 메소드에 스레드가 실행될 때 실행되는 코드를 삽입합니다.
4. 참조 클래스 메서드를 사용하여 인스턴스를 만듭니다.
둘. 예제의 자세한 코드 및 설명:
먼저 새 유닛을 생성하고 이를 mysort.pas로 저장합니다. 이 유닛에서는 TThread 클래스를 상속하는 TSortThread 클래스를 생성했으므로 프로그램에서 이 클래스의 인스턴스를 생성할 때 새 스레드를 생성했습니다. .
다음으로, 이 클래스에 Sort 메소드를 정의하여 배열을 정렬합니다. 동시에 TSortThread 클래스는 TThread 클래스의 생성자 메소드인 Create 및 Execute를 초월하여 배열을 정렬하는 Sort 메소드를 호출합니다. 구체적인 코드는 다음과 같습니다.
단위mysort;
인터페이스
useClasses;//TThread 클래스는 클래스에 정의되어 있습니다.
유형
PSortArray=TSortArray;
TSortArray=array.[0..MaxIntdivSize??
Of(정수)-1]ofInteger;
{여기에 정의된 TsortThread 클래스}
TSortThread=클래스(TThread)
사적인
{다음 개인 변수는 TSortThread 클래스에 정의되어 있습니다.}
fsortArray:PSortArray;
F크기:정수;
FA,FB,FI,FJ:정수;
보호됨
{클래스 TSortThread는 Tthread 클래스의 Execute 메소드를 초월합니다.}
프로시저 실행;재정의;
{클래스 TsortThread가 Sort 메서드를 추가합니다.}
프로시저 Sort(varA:arrayofInteger);
공공의
{클래스 TSortThread는 클래스 Tthread의 생성자 메서드를 초월합니다.}
constructorCreate(varSortArray:arrayofInteger);
끝;
구현
constructorTSortThread.Create(varSortArray:arrayofInteger);
시작하다
FSortArray:=@SortArray;
FSize:=높음(SortArray)-낮음(SortArray)+1;
FreeOn 종료:=참;
상속받은Create(False);
끝;
{스레드가 시작되면 Execute 메서드가 호출됩니다. }
프로시저 TSortThread.Execu??
테;
시작하다
Sort(Slice(FSortArray,FSize));
끝;
{버블 정렬은 아래에 구현되어 있습니다}
절차 TSortThread.Sort(varA:arrayofInteger);
var
I,J,T:정수;
시작하다
forI:=높음(A)아래로낮음(A)do
forJ:=낮음(A)에서 높음(A) - 1do
ifA[J]>A[J+1]then
시작하다
T:=A[J];
A[J]:=A[J+1];
A[J+1]:=T;
종료된 경우 종료합니다.
끝;
끝;
끝
마지막으로, 사용자 애플리케이션 구현 시 presentsmysort를 추가하고, 정렬이 수행되는 곳에 TQuickSortthread.Create(SortArray)를 추가합니다. 여기서 SortArray는 실제 배열입니다. 이러한 방식으로 스레드를 사용하여 정렬을 구현할 수 있으며, 사용자는 정렬이 끝날 때까지 기다리지 않고 다른 작업을 수행할 수 있습니다. 실시간으로 사용자 작업에 응답하기 위해 여러 스레드를 사용하는 이 방법은 대량의 데이터 처리와 관련된 응용 프로그램에서 특히 중요합니다.