Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by r2c2,
26. Nov 2011
Kommt drauf an. Wenn die Instanziierung ausreicht, um das Objekt in nen konsistenten zustand zu versetzen, ist das OK und oft die bessere Lösung. Wenn man immer initialize() aufrufen muss, hat man ne weitere Fehlerquelle geschaffen, was ich definitiv vermeiden würde.
mfg
Christian
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by r2c2,
26. Nov 2011
Man könnte hier natürlich darüber streiten, ob die Pool-Threads den Pool überhaupt kennen sollten, aber hier hast du recht. Immer, wenn man im Konstruktor einen Thread erzeugt und dem Self mitgibt hat man das Problem und deine Lösung hilft hier. OK, verstanden.
mfg
Christian
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by r2c2,
26. Nov 2011
So langsam versteh ich, was du meinst. War nur ein bisschen unintuitiv für mich, dass du nen Thread gleichzeitig als Kontext und Beispiel verwendet hast.
Was du hier also beschriebst, ist eine Anwendung des RAII-Idioms zum Verwalten der CS-Instanzen. OK. Bleibt noch das Problem, das himitsu genannt hat, aber dafür hat er ja auch schon ne Lösung gepostet. Das ist soweit OK und auch ein...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by r2c2,
26. Nov 2011
Das ist klar; war aber nicht meine Aussage. Ich denke, man sollte Seiteneffekte in Konstruktoren eh möglichst vermeiden. Manchmal sind sie notwendig, aber häufig gibt es bessere Möglichkeiten. Furtbichler hat das ganze nochmal ausführlicher beschrieben: Wenn man sauber programmiert, braucht man sowas nur in Ausnahmefällen.
Zudem sind es ja normalerweise nicht die Threads, die Thread-Safe sein...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by r2c2,
26. Nov 2011
Warum haben deine Konstruktoren denn überhaupt Seiteneffekte? Denn nur dann braucht man ja die CriticalSections.
mfg
Christian