Einzelnen Beitrag anzeigen

Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#12

Re: 2 Threads mit Events synchonisiern

  Alt 7. Sep 2005, 05:33
Auch auf die Gefahr hin, das ich an euch allen vorbei-rede, weil ich nicht richtig "zugelesen" (aka zugehört ) habe versuch ichs noch mal. Mein Lösungsvorschlag ist der folgende:

Delphi-Quellcode:
TDataThread = class(TThread)
... bla blubber
end;

TVisualThread = class(TThread)
... didel dadel
end;

var
  DataAvailable : Boolean;
  Data : IchKennDenTypNicht;
  thrData : TDataThread;
  thrViusal : TVisualThread;

procedure TDataThread.Execute();
var
  TempData : VonObigemTyp;
begin
  while not suspended ot terminated do
  begin
    TempData:=WoGibtsDennHierDieDaten();
    //Hier drum kümmern das "Data" solange nicht überschrieben wird, solange der andere Thread die nicht gelese n hat
    //danach:
      DataAvailable:=true;
    sleep(2); //Oder natürlich WaitForSingleObject oder ähnlich; aber mindestens eine 1ms schlafen, sonst (b)rennt die CPU
  end;
end;

procedure TVisualThread.Execute();
begin
  while not Suspended or Terminated do
  begin
    if (DataAvailable) then
    begin
       Synchronize(MachWasMitDenDaten);
       DataAvailable:=false;
    end;
    sleep(2); //Der "armen" CPU zuliebe :)
  end;
end;

procedure TForm1.Create(Sender:TObject);
begin
  DataAvailable:=false;
  thrData:=TDataThread.Create ...
  thrVisual:=TVisualThread.Create ...
end;
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat