Einzelnen Beitrag anzeigen

McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#1

Frage zu Thread und Ciritical Section

  Alt 23. Apr 2006, 20:00
Hallo.

Ich habe eine Frage zum Thema Threads.

Ich habe einen Thread, der über eine Critical Section auf ein Element zugreift.
Ein anderes Objekt will ab und zu ebenfalls auf dieses Element zugreifen (ebennfalls über Critical Section).

Nun habe ich beim ersten Test festgestellt, das das Objekt nie Zeit bekommt zuzugreifen. Der Thread läuft ständig, und belegt die ganze Zeit die Critical Section.
Wenn ich eine kurze Pause im Thread einfüge, dann geht es. Aber nun läuft das Programm irgentwie "unrund". Wenn ich die Form mit der Maus verschieben will, bewegt es sich sehr hagelig.
Liegt das an dem Sleep Befehl?
Wie kann ich das Problem sonst lösen?

Hier der Code:

Delphi-Quellcode:
//Der Thread
procedure einThread.execute;
begin
  while not Terminated do
    begin
      try
        //Pause, ansonsten würde eine andere Critical Section keine Zeit bekommen
        sleep(20);
        FCritSect.Enter;
          //Zugriff auf ein Objekt (Lesefunktion von Indy10)
        FCritSect.Leave;
      except
      end;
    end;
end;


//Das andere Objekt
procedure Datensenden;
begin
  try
    self.FCritSect.Enter;
      //Zugriff auf ein Objekt (Schreifunktion von Indy10)
    self.FCritSect.Leave;
  except
  end;
end;
  Mit Zitat antworten Zitat