Acerca de la enseñanza de programación multiproceso en C
En Windows NT y Windows 9x, la programación multiproceso requiere llamar a una serie de funciones API, como CreateThread, ResumeThread, etc., lo cual es engorroso y propenso a errores. Utilizamos la herramienta de desarrollo RAD de nueva generación C++Builder de Inprise, que puede implementar fácilmente programación multiproceso. En comparación con las antiguas herramientas RAD Visual Basic y Delphi, C++Builer no solo es muy poderoso, sino que su lenguaje de programación es C++. Para los sistemas operativos de la serie Windows cuyo lenguaje de desarrollo de sistemas es C, tiene ventajas incomparables sobre otros lenguajes de programación. Al utilizar el objeto TThread proporcionado por C++Builder, la programación multiproceso se vuelve muy simple y fácil de usar. Entonces, ¿cómo lograrlo? Déjame contarte lentamente para que puedas experimentar las poderosas funciones de subprocesos múltiples.
1. Cree un programa de subprocesos múltiples:
En primer lugar, presentemos los pasos específicos para implementar subprocesos múltiples. Aunque el objeto Tthread se usa para ilustrar el concepto de subproceso en C ++ Builder, el objeto Tthread en sí está incompleto. Es necesario crear una nueva subclase en TThread y sobrecargar el método Execute para usar el objeto subproceso. Esto se puede lograr fácilmente con C++Builder.
En el entorno IDE de C++Builder, seleccione el menú Archivo|Nuevo, seleccione Objeto de subproceso en la columna Nuevo, presione Aceptar y luego aparecerá un cuadro de entrada. Ingrese el nombre MyThread del TThread. subclase de objeto, para que C++Builder la cree automáticamente. Una subclase TThread llamada TMyThread.
Al mismo tiempo, hay una unidad adicional llamada Unit2.cpp en el editor. Este es el código original de la subclase TMyThread que creamos, de la siguiente manera:
#include
#. pragma hdrstop
p>#include “Unit2.h”
#pragma package(smart_init)
//—————————— ———————————————— -----
// Importante: Los métodos y propiedades de los objetos en VCL solo pueden ser
/ / usado en un método llamado usando Synchronize, por ejemplo:
//
// Synchronize(UpdateCaption
//
// donde UpdateCaption podría verse así:
//
// void __fastcall MyThread::UpdateCaption()
// {
// Form1-gt; Caption = "Actualizado en un hilo"
// }
//-------------- ------
__fastcall MyThread: :MyThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//-------- -------------
void __fastcall MyThread::Execute()
{
//---- Coloque el código del hilo aquí ----
}
//--------- ------------
La función Execute() es donde se encuentra el código de la tarea que queremos implementar en el hilo. Al incluir Unit2.cpp en el código original, se puede utilizar el objeto TMyThread creado por nosotros. Cuando se usa, cree dinámicamente un objeto TMyThread y use el método Resume () en el constructor. Luego agregue al programa un nuevo hilo TMyThread definido por nosotros. El código de ejecución específico es el código sobrecargado por el método Execute (). Para cargar más subprocesos, no importa, simplemente continúe creando tantos objetos TMyThread como sea necesario.