[elektro] idoosztasi strategia
Info
info at kiralyelektronika.hu
Fri Jul 29 20:16:11 CEST 2011
Szóval thread és waitformultipleobject párost javaslom.
Teljesség igénye nélkül:
(a baj az vele, hogy kilépéshez is kell esemény vagy pedig megadsz
mondjuk 1000ms időhatárt és ciklikusan meg fogja lesni a Terminated
értékét)
TEseményem =(tEgyik, tMásik, ..., tKilépés);
TSajátszálam = class(TThread);
private
EseményTömb: array[TEseményem]of THandle;
constructor Create;
procedure Ecexute; override;
procedure SignalEvent;
procedure DoEvent1;
const TSajátszálam.Create;
begin
inherited Create(true);
for i := Low(TEseményem) to High(TEseményem) do
CreateHandle(EseményTömb[i], false);
Resume;
end;
proc TSajátszálam.Execute;
begin
while not Terminated do begin
case WaitforMultipleObject(EseményTömb, hánydarab, INFINITE) of
Wait_Object0 + 0: ResetEvent(EseményTömb[tEgyik]);
Synchronize(DoEvent1);
Wait_Object0 + 1: ResetEvent(EseményTömb[1]);
Synchronize(második esemény funkció);
end;
end;
for i := Low(TEseményem) to High(TEseményem) do
CloseHandle(EseményTömb[i]);
end;
proc TSajátszálam.SignalEvent(melyik: TEseményem);
begin
SetEvent(EseményTömb[melyik]);
end;
proc TSajátszálam.DoEvent1;
begin
kiír("kukucs :)");
end;
initialization
szálam := TThread.Create(false);
Finalization
Szálam.Terminate;
SignalEvent(kilépés);
Szálam.Free;
More information about the Elektro
mailing list