Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
9. Nov 2014
OK, der Thread des Fiber darf nicht vom Fiber beendet werden, aber auch der Fiber muß sich selber beenden, indem er selber am Ende eine bestimmte Funktion aufruft.
Von außen darf auch ein Fiber nicht einfach so unkontrolliert angehalten/beendet werden, damit er nicht in einem "ungünstigen" Zustand stehen bleibt.
Egal ob Thread oder Fiber, sobald etwas globales verwendet wird, muß man...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
8. Nov 2014
Dieses Problem gibt es nicht, da man Threads niemals von außen anhält. :warn:
Man sagt einenm Thread er solle sich bitte anhalten und er macht das dan selber, an definierter/sicherer Stelle.
Das Problem liegt nicht nur beim Beenden, sondern auch beim ausführenden Code.
Beispiel: Du hälst den an, während er grade Speicher reserviert/freigibt, oder auf irgendeine Resource zugreift ... wenn der...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
8. Nov 2014
Mehrere in Fibern ausgeführte Prozeduren müssten doch langsamer sein, als einfach mehrere Prozeduren in einem Thread nacheinander aufzurufen?
Der einzige Vorteil, den ich da seh, daß man den Fiber einfach mal so mittendrin anhalten könnte, aber einen Thread kann man ja genauso gut anhalten. (auch wenn man das eigentlich nicht machen sollte, was dabei allerdings auch für die Fiber gilt)
...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Nov 2014
Dieses komische Rumgepointere solltest du besser lassen
Length
StringElementSize
StringCodePage
StringRefCount
Ansonsten ist es ganz nett (so hatte ich es vor Einführung dieser Funktionen gemacht), wenn man sich einen Record erstellt (kannst dir bei System.StrRec abgucken) und darüber geht.
P := PStringRec(Pointer(S) - SizeOf(PStringRec)); -> P.RefCount