Hi!
| Zitat: |
| Er sollte die gesamte Schleife durchlaufen, und nicht nur immer Stückchen nach Stückchen. |
Ich glaube, du verstehst da irgendetwas nicht ganz. So arbeiten nun mal Threads. Sie kriegen ihre CPU-Zeit, arbeiten, und machen dann Pause, damit andere Threads auch was machen können. Trotzdem wird natürlich die zu erledigende Arbeit auch getan (die ganze Schleife durchlaufen). Nur wahrscheinlich nicht in einer einzigen Zeitzuteilung.
Mit Synchronisiertem MT meint man einfach, dass mehrere Threads auf ein und dieselben Daten zugreifen müssen (z.B. dieselbe Tabelle). Unsynchronisiert wäre es, wenn der eine Thread in Datei A liest und schreibt, der andere in Datei B. Es gibt keine möglichen Konflikte, deshalb muss man auch nicht aufpassen, dass nicht beide zur gleichen Zeit in dieselben Speicherbereiche schreiben wollen.
Du musst nun deine Threads synchronisieren, damit nicht beide den gleichen Datensatz abändern. Z.B. den ersten Thread die DS 1-100 erledigen lassen, und dem zweiten den Bereich 101-200 zuweisen.
Sobald einer von beiden fertig ist, musst du entweder per Synchronize oder per TCriticalSection einen neuen, gerade nicht benutzten Bereich zuweisen und erneut starten (sofern noch Bereiche da sind die zu bearbeiten sind).
Mal eine Frage: Wofür benötigst du 2 Threads, die
nacheinander ausgeführt werden sollen? Das ergibt doch keinen Sinn, das kann auch einer alleine tun.
Thread-Verwendung & (SQL-)Datenbanken ist sowieso eine kritische Sache...
Cu,
Udontknow