Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
20. Mär 2012
Das geht ja dennoch.
MyList.Lock;
try
Dateiinfo:=Leseausdatei(MyList.Item.FileName); //Leseausdatei ist kein Bestandteil der Klasse
//Was passiert, wenn während der Leseausdatei Function gleichzeitig das MyList.Item über MyList.Delete(5) gelöscht wird.
Mylist.Item.Daten:=Dateiinfo; //Daten werden in falschen Item gespeichert.
finally
MyList.Unlock;
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
20. Mär 2012
Wozu das MustLock?
Erstmal das von Blup Genannte
und wenn sich zwischen Lock und Unlock das MustLock ändert, dann stimmt die Anzahl auch nicht mehr.
Im Prinzip ist das LockList/UnlockList umsonst, außerdem fehleranfällig und Lock/Unlock alleine reicht auch schon aus.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
19. Mär 2012
Und das Try-Finally nicht vergessen, denn die CS muß eben unbedingt genau so oft verlassen/freigegeben werden, wie sie betreten/gesperrt wurde.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
18. Mär 2012
Pollen ist hier leider die einzige Möglichkeit, wenn man ein TimeOut benötigt, also bei der CS.
Ansonsten müßte man auf Events (z.B. SetEvent oder TEvent) umsteigen.
Beim Pollen muß meventuell an aufpassen, daß man nicht die CPU hochtreibt.
Ich bei da Pausen in die Schleife, so mit je um die 20 Millisekunden.
Aber dort kann man sich unter umständen auch aussperren, wenn zwei/mehrere Threads...