Wenn du die Teilbereiche etwas intelligenter machst (kennt seine Nachbarn, kann sich und die Nachbarn sperren), dann erstellst du die Teilbereiche, packst diese in eine Queue und aus dieser Queue werden die Worker bedient.
Code:
repeat
TB = Queue.Dequeue
if not TB.TryLock then
Queue.Enqueue( TB )
TB = nil
until TB <> nil
WorkerThread.WorkOn( TB )
Dadurch organisieren sich die Teilbereiche und WorkerThreads selber und du kannst eine allgemein gültige Klasse schreiben, die solche Arten von Aufgaben durch Threads erledigen lässt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)