Warum haben deine Konstruktoren denn überhaupt Seiteneffekte? Denn nur dann braucht man ja die CriticalSections.
mfg
Christian
Wenn ich in meiner Anwendung keine Threads benutze, dann kann ich mir das sparen - richtig.
Aber wenn ich Thread-Safe Objekte benötige, dann könnten auch die Konstruktoren Seiteneffekte haben, je nachdem was ich im Konstruktor mache.
z.B. könnte ich dort die Instanz an einen bestehen Thread übergeben
Wäre der Konstruktor also nicht geschützt, dann würde es sofort knallen, wenn ich mit dem Konstruktor noch nicht fertig bin und der Thread schon auf meine Instanz zugreift.
Ich stelle einfach damit sicher, das es nicht knallen kann.
Es geht also darum, wie ich Objekte Thread-Safe bekomme - und ich möchte meine Objekte generell Thread-Safe haben und nicht nur unter ganz bestimmten Bedingungen.
Warum sollte man eine Klasse so deklarieren?
Delphi-Quellcode:
TFoo = class // Ableitung von TObject
public
constructor Create;
end;
constructor TFoo.Create;
begin
inherited; // wofür sollte das gut sein, denn TObject.Create beinhaltet nichts
// irgendwas
end;
Ganz einfach, im Moment beinhaltet der Konstruktor von TObject keinen Code, aber er könnte irgendwann mal Code haben und ich bin auch in Zukunft safe.