Lorsque la quantité de données traitées est importante, comment répondre aux opérations des utilisateurs lors du traitement des données ? Windows95/98 et WindowsNT sont des systèmes d'exploitation multitâches multithread. Leur unité de planification est un thread, c'est-à-dire qu'un thread est l'unité de base permettant au système d'allouer des ressources de temps processeur. Nous pouvons donc utiliser des threads pour traiter de gros lots. des données tout en répondant aux opérations des utilisateurs.
En tant qu'excellente plate-forme de développement, DELPHI offre un support solide pour le développement d'applications multithread. Vous pouvez utiliser directement la fonction d'interface Win32API CreateThread fournie par l'environnement Windows 32 bits, ou vous pouvez utiliser la fonction BeginThread fournie dans DELPHI. Dans l'exemple suivant, la classe TThread fournie par DELPHI est utilisée.
un. La méthode de base est la suivante :
1. Dérivez une nouvelle classe de la classe Tthread. (Créer une classe TSortThread)
2. Définissez la méthode Create de la nouvelle classe.
3. Définissez la méthode Execute de la nouvelle classe et insérez le code exécuté lorsque le thread est en cours d'exécution dans la méthode Execute.
4. Créez des instances à l'aide des méthodes de classe de référence.
deux. Code détaillé et description de l'exemple :
Tout d'abord, créez une nouvelle unité et enregistrez-la sous mysort.pas. Dans cette unité, nous avons créé une classe TSortThread, qui hérite de la classe TThread, donc lorsque nous créons une instance de cette classe dans le programme, nous créons un nouveau thread. .
Ensuite, définissez une méthode Sort dans cette classe pour trier le tableau. En même temps, la classe TSortThread transcende les méthodes constructeur Create et Execute de la classe TThread. Dans la méthode d'exécution, la méthode Sort pour trier le tableau est appelée. Le code spécifique est le suivant :
unitémontri;
interface
usesClasses;//La classe TThread est définie dans Classes.
taper
PSortArray=TSortArray;
TSortArray=array.[0..MaxIntdivSize ??
De(Integer)-1]ofInteger ;
{Classe TsortThread définie ici}
TSortThread=classe(TThread)
Privé
{Les variables privées suivantes sont définies dans la classe TSortThread}
fsortArray:PSortArray;
FTaille : Entier ;
FA, FB, FI, FJ : entier ;
Protégé
{La classe TSortThread transcende la méthode Execute de la classe Tthread}
procédure Exécuter ; remplacer ;
{Class TsortThread ajoute une méthode Sort}
procédure Sort(varA:arrayofInteger);
publique
{La classe TSortThread transcende la méthode constructeur de la classe Tthread}
constructorCreate(varSortArray:arrayofInteger);
fin;
mise en œuvre
constructorTSortThread.Create(varSortArray:arrayofInteger);
commencer
FSortArray:=@SortArray;
FSize:=Élevé(SortArray)-Low(SortArray)+1 ;
FreeOn Terminer :=Vrai ;
héritéCreate(False);
fin;
{Lorsque le thread démarre, la méthode Execute sera appelée. }
procédure TSortThread.Execu ??
te;
commencer
Trier(Tranche(FSortArray,FSize));
fin;
{Le tri des bulles est implémenté ci-dessous}
procédure TSortThread.Sort(varA:arrayofInteger);
var
I, J, T : Entier ;
commencer
pourI:=Haut(A)downtoLow(A)do
pourJ :=Bas(A)àÉlevé(A)-1do
si A[J]>A[J+1] alors
commencer
T : = A[J] ;
UNE[J]:=UNE[J+1];
UNE[J+1]:=T;
ifTerminate alors Quitter ;
fin;
fin;
fin
Enfin, ajoutezusesmysort lors de l'implémentation de l'application utilisateur et ajoutez TQuickSortthread.Create(SortArray) où le tri est effectué, où SortArray est un tableau réel. De cette manière, les threads peuvent être utilisés pour implémenter le tri. Pendant le processus de tri, les utilisateurs peuvent effectuer d'autres opérations sans attendre la fin du tri. Cette méthode consistant à utiliser plusieurs threads pour répondre aux opérations des utilisateurs en temps réel est particulièrement importante dans les applications impliquant de grandes quantités de traitement de données.