Forum: Win32/Win64 API (native code)
Delphi
by BUG,
24. Apr 2015
Ich habe völlig übersehen, das CS nicht Starvation-frei sind. Dann macht das yield nach dem verlassen oder vor dem Betreten tatsächlich Sinn. Das schlimmste was ansonsten passieren könnte, wäre dass Windows immer dann einen Kontextwechsel macht, während der Thread in der CS ist :stupid:
Das erklärt aber noch nicht das oben angedeutete Problem.
Forum: Win32/Win64 API (native code)
Delphi
by BUG,
24. Apr 2015
Das solltest du mal genauer beschreiben. Außerhalb der CS solltest du nicht auf Daten zugreifen, die mit der CS geschützt sind. Da ist irgendetwas faul.
Das Sleep hilft, könnte aus der Hüfte geschossen an Timing-Effekten oder an eventuellen Speicherbarrieren beim Suspendieren des Threads liegen.
Mich würde ein minimales Beispiel interessieren, wo es ohne Sleep schief geht.