Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: TDictionary und TThread

  Alt 27. Feb 2020, 01:55
Was, du hälst von außen den anderen Thread an fragwürdig undefinierter Stelle an?
Delphi-Referenz durchsuchenTThread.Suspend

Wenn das, dann NIEMALS, schäm dich, steinigt ihn, ...
Nicht umsonst wurden Resume/Suspend inzwischen als deprecated deklariert.

Mit etwas Glück kann man durch sowas sein komlettes Programm lahmlegen,
z.B. wenn der Thread gerade dabei war beim MemoryManager eine Speicheranforderung zu machen (Get/Free/Alloc/Realloc/...) und der Thread gerade da pausiert wird, wo er eine der CriticalSections im Manager blockiert hat und der andere Thread im selben Speicherbereich etwas machen will.

Für eine "einfache"/billige Threadabsicherung ohne eigene Sperrinstanz kann man auch SendMessage oder TThread.Synchronize/Queue benutzen.
Delphi-Quellcode:
procedure ...;
var
  B: Boelean;
begin
  ...
  //Synchronize(procedure // innerhalb einer TThreadklasse
  TThread.Synchronize(nil, procedure
  begin
    B = List.Find(xxx);
  end);
  if B then
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Feb 2020 um 02:04 Uhr)
  Mit Zitat antworten Zitat