Utilizar hilos sin la clase vcl thread

Para utilizar hilos sin la clase Thread tenemos que hacer 2 cosas:

1) Crear el thread

La llamada para crear el hilo sería así:
procedure TForm1.Button1Click(Sender: TObject);
var
thr : THandle;
thrID : DWORD;
begin
thr := CreateThread(nil, 0, @HacerAlgo, nil, 0, thrID);
if (thr = 0) then ShowMessage('Error al crear el hilo);
end;

2) Proporcionar una función al hilo.

Requerimientos de la función:
- Se le puede dar el nombre que se quiera
- Debe tener un parámetro de tipo puntero
- La función devolverá un parámetro del tipo longint
- En la declaración se debe añadir la directiva stdcall, lo que le dice al compilador que la función le pasará los parámetros según la convención de Windows.

Ej.
FUNCTION HacerAlgo(Ptr : Pointer) : LongInt; STDCALL;
BEGIN
SetThreadPriority(DWORD(-2), THREAD_PRIORITY_IDLE); //Establece la prioridad del hilo
//Opcional. Evita el acceso simultáneo a las variables contenidas entre InterlockedIncrement e
// InterlockedDecrement
InterlockedIncrement(iValor);
--
--
--
InterlockedDecrement(iValor);
END;

No hay comentarios:

Publicar un comentario

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...