Zitat von
ste_ett:
Das geht über "kritische Sektionen".
Delphi-Quellcode:
uses SyncObjs;
CriticalSection: TCriticalSection;
CriticalSection.Enter;
{ kritischen Quellcode hier rein }
CriticalSection.Leave;
Was nützt dir dass, wenn du in Thread A die Funktion D aus der
DLL aufrufst, die die globale Variable G um eins erhöht und Thread B auch die Funktion D aus der
DLL aufruft, die noch mals die globale Variable G in der
DLL um eins inkrementiert und dann Thread A mit der Funktion E aus der
DLL die globale Variable G wieder ausliest und auf einmal 2 zurück bekommt anstatt, wie erwartet, eins? Da nützt es dir auch nichts, wenn die beiden Threads nur innerhalb Critical Sections die besagte Funktion D aufrufen.