Bevor ich eine Teilaufgabe in einen Thread auslagere mache ich mir Gedanken darüber, wie das in der Realität aussehen würde.
Statt Threads nehme ich dann einfach Mitarbeiter.
Statt einem Pixel nehme ich einen Kieselstein.
Der Mitarbeiter soll also einen ganzen Haufen Kieselsteine von A nach B bewegen.
Möchte ich wirklich, dass der bei
jedem einzelnen Kieselstein bei mir vorbeikommt und mich persönlich (Sychronize) informiert, dass er einen weiteren Kieselstein bewegt hat?
Er könnte mir ja auch eine Nachricht hinterlassen (Queue) die ich mir dann bei nächster Gelegenheit anschaue.
Aber will ich wirklich über jeden einzelnen eine Nachricht habe? Oder würden mir ein paar Rückmeldungen auch reichen (alle 10% Fortschritt)?
Wenn man das so durchspielt, dann weiß man, wo man selbst und der Mitarbeiter gestresst/gehemmt ist und das trifft exakt auf die
GUI und den Thread zu. Das zusammen mit einer umständlichen Arbeitsweise (GetPixel) bringt jedes System in die Knie.