da die Berechnungs-Threads, wenn sie erstmal dran sind, die Queue füllen und dann die
GUI wieder nicht wie gewünscht zum Zug kommt.
Mhm, dass klingt so, als ob die synchronisierten Stellen sehr oft aufgerufen werden.
In dem Zusammenhang:
und an manchen Stellen threadsichere Datenzugriffe brauche.
Vermutlich wärst du da mit CriticalSections oder anderen feingranularen Synchronisationsmitteln besser dran.
Aber müsste nicht eigentlich ein idle-Thread gar nicht erst zum Absetzen seiner Synchronize-Routine kommen, wenn das Hauptprogramm was tun will?
Ich denke eher, dass das das Hauptprogramm gerade den synchronisierten Teil ausführt, wenn der Nutzer eigentlich was interaktives Machen will. Außerdem könnte es sein, dass Synchronisierungs-Nachrichten von der Anwendung/
Windows gegenüber UI-Nachrichten bevorzugt werden
Auf einem Multicore-System könnten theoretisch auch Hauptthread und Idle-Thread gleichzeitig ausgeführt werden.