Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#19

AW: Kurze Frage zur Thread Sicherheit

  Alt 5. Okt 2012, 07:37
Also ich mach das mit einer Semaphore und einer CS.
Delphi-Quellcode:
Procedure TMyThread.Add(aSomething : TData);
Begin
  FCS.Enter;
  Try
    Queue.Enqueue(aSomething);
    ReleaseSemaphore(FSemaphore,1,nil);
  Finally
    FCS.Leave
  End
End;

Function TMyThread.GetNextData : TData;
Begin
 FCS.Enter;
 Try
   If Queue.Count>0 then
     Result := Nil
   else
     Result := Queue.Dequeue;
 Finally
   FCS.Leave;
 End;
End;
     
Procedure TMyThread.Execute;
Begin
  While not Terminated do
    If WaitForSingleObject(FSemaphore,INFINITE)=WAIT_OBJECT_0 then
      DoWhatever(GetNextData);
end;
Ich sträube mich, einen Thread mit Sleep(1) im Kreis rennen zu lassen.
  Mit Zitat antworten Zitat