Cuando la cantidad de procesamiento de datos es grande, ¿cómo responder a las operaciones del usuario mientras procesa los datos? Windows95/98 y WindowsNT son sistemas operativos multitarea con múltiples subprocesos. Su unidad de programación es un subproceso, es decir, un subproceso es la unidad básica para que el sistema asigne recursos de tiempo del procesador. Por lo tanto, podemos utilizar subprocesos para procesar lotes grandes. de datos mientras responde a las operaciones del usuario.
Como excelente plataforma de desarrollo, DELPHI brinda un fuerte soporte para el desarrollo de aplicaciones multiproceso. Puede usar directamente la función de interfaz Win32API CreateThread proporcionada por el entorno Windows de 32 bits, o puede usar la función BeginThread proporcionada en DELPHI. En el siguiente ejemplo, se utiliza la clase TThread proporcionada por DELPHI.
uno. El método básico es el siguiente:
1. Derive una nueva clase a partir de la clase Tthread. (Crear clase TSortThread)
2. Defina el método Create de la nueva clase.
3. Defina el método Execute de la nueva clase e inserte el código ejecutado cuando el hilo se ejecuta en el método Execute.
4. Cree instancias utilizando métodos de clase de referencia.
dos. Código detallado y descripción del ejemplo:
Primero, cree una nueva unidad y guárdela como mysort.pas. En esta unidad, creamos una clase TSortThread, que hereda de la clase TThread, por lo que cuando creamos una instancia de esta clase en el programa, creamos un nuevo hilo. .
A continuación, defina un método Sort en esta clase para ordenar la matriz. Al mismo tiempo, la clase TSortThread trasciende los métodos constructores Create y Execute de la clase TThread. En el método de ejecución, se llama al método Sort para ordenar la matriz. El código específico es el siguiente:
unidadmiclasificación;
interfaz
usesClasses;//La clase TThread se define en Clases.
tipo
PSortArray=TSortArray;
TSortArray=matriz.[0..MaxIntdivSize??
De(Entero)-1]deEntero;
{Clase TsortThread definida aquí}
TSortThread=clase(TThread)
Privado
{Las siguientes variables privadas están definidas en la clase TSortThread}
fsortArray:PSortArray;
Tamaño F:Entero;
FA,FB,FI,FJ:Entero;
Protegido
{La clase TSortThread trasciende el método Execute de la clase Tthread}
procedimiento Ejecutar; anular;
{La clase TsortThread agrega un método de clasificación}
procedimiento Ordenar(varA:arrayofInteger);
público
{La clase TSortThread trasciende el método constructor de la clase Tthread}
constructorCreate(varSortArray:arrayofInteger);
fin;
implementación
constructorTSortThread.Create(varSortArray:arrayofInteger);
comenzar
FSortArray:=@SortArray;
FSize:=Alto(OrdenarArray)-Bajo(OrdenarArray)+1;
FreeOn Terminar:=Verdadero;
heredadoCrear (Falso);
fin;
{Cuando se inicie el hilo, se llamará al método Execute. }
procedimiento TSortThread.Execu??
te;
comenzar
Ordenar(Slice(FSortArray,FSize));
fin;
{La clasificación de burbujas se implementa a continuación}
procedimiento TSortThread.Sort(varA:arrayofInteger);
var
I,J,T:Entero;
comenzar
para I: = Alto (A) hasta Bajo (A) hacer
paraJ:=Bajo(A)aAlto(A)-1do
siA[J]>A[J+1]entonces
comenzar
T:=A[J];
A[J]:=A[J+1];
A[J+1]:=T;
si termina, entonces salga;
fin;
fin;
fin
Finalmente, agregue usesmysort en la implementación de la aplicación de usuario y agregue TQuickSortthread.Create(SortArray) donde se realiza la clasificación, donde SortArray es una matriz real. De esta manera, se pueden utilizar subprocesos para implementar la clasificación. Durante el proceso de clasificación, los usuarios pueden realizar otras operaciones sin esperar a que finalice la clasificación. Este método de utilizar múltiples subprocesos para responder a las operaciones del usuario en tiempo real es particularmente importante en aplicaciones que involucran grandes cantidades de procesamiento de datos.