Kommunikation zwischen Threads
-
Ich muß die Kommunikation zwischen zwei Threads regeln. Der eine Thread ist durch das Hauptprogramm gegeben, dort wird ein zweiter gestartet, der asynchron eine Arbeit erledigt und danach seinen Dienst quittiert. Allerdings muß Thread1 davon in Kenntniss gesetzt werden.
Ich kenne spontan nur zwei Möglichkeiten, die beide auf das selbe hinauslaufen:
Eine gemeinsame, gesicherte Zustandsvariable oder eine stream-verbindung. Beides müsste aber ge-"pollt" werden, also ständig abgefragt, ob es denn nun soweit ist. SInd das wirklich die einzigen Lösungen?
-
eigentlich alle multitasking-systeme bieten 'events' o.ä. an, auf die die threads warten können. sie werden solange pausiert, bis das ereignis eintritt...
-
Ich hab mir die Events mal angeschaut, aber eine Sache ist in meinem post wohl nicht richtig durchgekommen: Der Ursprungsthread darf nicht blockieren. Es muss also eine asynchrone benachrichtigung sein.
-
Du könntest mal mit dem API SendMessage versuchen.
-
Serethos schrieb:
Der Ursprungsthread darf nicht blockieren.
Es ist meistens auch möglich, einfach nur zu prüfen, ob ein Event ausgelöst wurde, also ohne zu warten.
-
Serethos schrieb:
Der Ursprungsthread darf nicht blockieren.
naja, dann musste wohl doch irgendwie pollen o.ä.
mir scheint polling ist etwas in verruf geraten, aber für manche fälle ist es doch die bessere lösung...
-
Danke für Eure Antworten. Ich werde jetzt nochmal im WinApi-Forum anknüpfen, um herauszufinden, ob mir PostMessage etwas bringt. Leider ist das alles für mich Neuland. Sollte es nichts bringen, werd ich mit größeren Zeitabständen (vielleicht 500ms) pollen, um die Last zu minimieren.