Ketika jumlah pemrosesan data besar, bagaimana merespons operasi pengguna saat memproses data? Windows95/98 dan WindowsNT adalah sistem operasi multi-tasking multi-thread. Unit penjadwalannya adalah thread, artinya thread adalah unit dasar sistem untuk mengalokasikan sumber daya waktu prosesor data saat merespons operasi pengguna.
Sebagai platform pengembangan yang unggul, DELPHI memberikan dukungan kuat untuk pengembangan aplikasi multi-thread. Anda dapat langsung menggunakan fungsi antarmuka Win32API CreateThread yang disediakan oleh lingkungan Windows 32-bit, atau Anda dapat menggunakan fungsi BeginThread yang disediakan di DELPHI. Contoh berikut menggunakan kelas TThread yang disediakan oleh DELPHI.
satu. Cara dasarnya adalah sebagai berikut:
1. Turunkan kelas baru dari kelas Tthread. (Buat kelas TSortThread)
2. Tentukan metode Buat kelas baru.
3. Tentukan metode Execute dari kelas baru, dan masukkan kode yang dieksekusi saat thread berjalan dalam metode Execute.
4. Buat instance menggunakan metode kelas referensi.
dua. Kode detail dan deskripsi contoh:
Pertama, buat unit baru dan simpan sebagai mysort.pas. Di unit ini, kita membuat kelas TSortThread, yang mewarisi kelas TThread, jadi ketika kita membuat instance kelas ini di program, kita membuat thread baru. .
Selanjutnya, tentukan metode Sortir di kelas ini untuk mengurutkan array. Pada saat yang sama, kelas TSortThread melampaui metode konstruktor Buat dan Jalankan dari kelas TThread. Dalam metode eksekusi, metode Sortir untuk mengurutkan array dipanggil. Kode spesifiknya adalah sebagai berikut:
unitmysort;
antarmuka
useClasses;//Kelas TThread didefinisikan di Kelas.
jenis
PSortArray=TSortArray;
TSortArray=array.[0..MaxIntdivSize??
Of(Integer)-1]ofInteger;
{Kelas TsortThread didefinisikan di sini}
TSortThread=kelas(TTThread)
Pribadi
{Variabel privat berikut didefinisikan di kelas TSortThread}
fsortArray:PSortArray;
Ukuran F: Integer;
FA,FB,FI,FJ:Bilangan Bulat;
Terlindung
{Kelas TSortThread melampaui metode Eksekusi dari kelas Tthread}
prosedur Jalankan; timpa;
{Class TsortThread menambahkan metode Sortir}
prosedur Sortir(varA:arrayofInteger);
publik
{Kelas TSortThread melampaui metode konstruktor kelas Tthread}
konstruktorCreate(varSortArray:arrayofInteger);
akhir;
pelaksanaan
konstruktorTSortThread.Buat(varSortArray:arrayofInteger);
mulai
FSortArray:=@SortArray;
FUkuran:=Tinggi(SortArray)-Rendah(SortArray)+1;
Penghentian Gratis Saat:=Benar;
warisanBuat(Salah);
akhir;
{Saat thread dimulai, metode Execute akan dipanggil. }
prosedur TSortThread.Execu??
te;
mulai
Sortir(Irisan(FSortArray,FSize));
akhir;
{Penyortiran gelembung diterapkan di bawah}
prosedur TSortThread.Sort(varA:arrayofInteger);
var
Saya,J,T:Bilangan Bulat;
mulai
forI:=Tinggi(A)turun keRendah(A)lakukan
forJ:=Rendah(A)keTinggi(A)-1lakukan
jikaA[J]>A[J+1]maka
mulai
T:=SEBUAH[J];
SEBUAH[J]:=SEBUAH[J+1];
A[J+1]:=T;
jika Dihentikan maka Keluar;
akhir;
akhir;
akhir
Terakhir, tambahkan usemysort pada implementasi aplikasi pengguna, dan tambahkan TQuickSortthread.Create(SortArray) di mana pengurutan dilakukan, di mana SortArray adalah array sebenarnya. Dengan cara ini, thread dapat digunakan untuk mengimplementasikan penyortiran. Selama proses penyortiran, pengguna dapat melakukan operasi lain tanpa menunggu penyortiran selesai. Metode penggunaan banyak thread untuk merespons operasi pengguna secara real time ini sangat penting dalam aplikasi yang melibatkan pemrosesan data dalam jumlah besar.