Forum: Object-Pascal / Delphi-Language
by stoxx,
15. Jan 2010
seine eigenen Daten darf natürlich jeder Thread nutzen wie er will ...
zu beachten ist allerdings, dass nur die Execute Methode im Thread läuft.
alle anderen Funktionen laufen im Hauptthread .. es sei denn , sie werden von Execute Aufgerufen.
Datenzugriffe in einer THread Klasse können also dennoch von unterschiedlichen Threads aufgerufen werden ...
Was zu beachten wäre ...
na das...
Forum: Object-Pascal / Delphi-Language
by stoxx,
15. Jan 2010
Wie benutze ich das TMultiReadExclusiveWriteSynchronizer? (wer hat sich den diesen sperrigen Namen ausgedacht?)
Der TMultiReadExclusiveWriteSynchronizer macht nur bei großen Datenmengen Sinn, bei einzelnen Integern ist der etwas Oversized ...
Die Klasse erlaubt das gleichzeitige Lesen von Daten von mehreren Threads, sofern gerade kein Thread schreibt, stellt aber sicher, dass wenn...
Forum: Object-Pascal / Delphi-Language
by stoxx,
15. Jan 2010
eher nicht, weil nicht so recht ersichtlich ist,wo jetzt die gemeinsam genutzten Daten liegen.
und wann wie wo wer was nutzt.
es gibt auch eine Threadsichere TList, namens "TThreadList ", wenn es sich bei den "gemeinsam genutzten Daten um eine TList handelt. da kann man sich critical Sektions sparen und die Liste "locken" und "unlocken"
hab ich aber noch nie verwendet ..
hab meine...
Forum: Object-Pascal / Delphi-Language
by stoxx,
15. Jan 2010
also .. das Problem bei Threads ist eigentlich nur, dass ein Thread Daten schreibt, noch gar nicht fertig ist, und ein anderer Thread diese Daten schon liest, und dann "halb" richtige Daten liest.
Stell Dir einen Integer vor, der hat 32 Bit. also 4 Bytes.
Ein Thread fängt jetzt an, diesen Integer von 4 Byte zu schreiben und ist gerade fertig geworden mit einem Byte.
(Auch wenn es nur ein...
Forum: Object-Pascal / Delphi-Language
by stoxx,
15. Jan 2010
kommt drauf an, wer wo schreibt.
Alle schreibenden Funktionen auf irgendwelche Daten und alle Lesenden Funktionen müssen syncrhonisiert werden.
Auch wenn es nur ein "kleiner" Integer Wert ist.
Weil es passieren kann, dass halbe Daten, und damit ungültige Daten gelesen und geschrieben werden.
Kleine Ausnahme .. booleans kann man auch so schreiben. Die werden mit einem Prozessorbefehl...
Forum: Object-Pascal / Delphi-Language
by stoxx,
15. Jan 2010
die Möglichkeiten in den Beispielen sind doch einfach ...