Hallo!
Ich arbeite mit einer Liste im Haupt-Thread und habe einen Hilfs-Thread, der die komplette Liste durchgeht und jeweils nur den Status einer Eigenschaft des Listeneintrags ermittelt und das Ergebnis wieder in der Liste ablegt. Ich verwende den Hilfs-Thread, weil die Ermittlung des Status unter Umständen sehr lange dauern kann und dann die Anwendung blockieren würde.
Solange der Haupt-Thread die Liste anpasst oder wenn der Hilfs-Thread mit seiner Arbeit (vorerst) fertig ist, soll er schlafen.
Mein erster Ansatz war nun, den Hilfs-Thread mit einer Variable den Zustand "Pausiert" zu verpassen. In diesem Zustand macht er dann nichts anderes als Sleep(10), solange der Zustand "Pausiert" bestehen bleibt, also Polling.
Das finde ich aber unschön und stattdessen habe ich jetzt einen
Mutex verwendet. Soll der Hilfs-Thread pausieren, reserviert sich der Haupt-Thread den
Mutex. Der Hilfs-Thread versucht nun das Gleiche mit WaitForSingleObject(
Mutex, INFINITE) und gerät deshalb in einen Wartezustand. Erst wenn der Haupt-Thread den Pause-Zustand beenden will, gibt er den
Mutex wieder frei, der Hilfs-Thread verlässt seinen Wartezustand, bekommt den
Mutex und gibt ihn sofort wieder frei.
Das funktioniert so weit ganz gut. Aber normalerweise reserviert man sich mit einem
Mutex eine Ressource und ich mache irgendwie genau das Gegenteil. Gibt es vielleicht noch ein anderes, passendes Objekt, auf das ich mit WaitForSingleObject() warten kann, oder eine sonstige, bessere Möglichkeit?
Vielen Dank im Voraus!