05.10.2009, 17:00
Hallo,
ich habe noch eine Frage zum Design "Erzeuger/Verbraucher:
Ich verwende Erzeuger-Verbraucher um das Erzeugen der Ereignisse von der Verarbeitung zu trennen.
So wie ich das sehe, werden die Ereignisse ja in eine Queue gestellt, aus der sich dann die Verbraucherschleife bedient.
Also Beispiel: ein Button "Hallo" wird gedrückt, die Erzeugerschleife stellt den String Hallo in die Queue.
Dort holt die Verbraucherschleife den String Hallo raus, und verarbeitet den.
Ich stelle nun fest, dass wenn diese Verarbeitung z.B. 10 sekunden dauert, das ganze GUI 10 Sekunden blockiert ist.
Ich verstehe nicht, wieso der Button „Hallo“ (andere Buttons genauso…) gedrückt bleibt, bis der Code der Verbraucher-Case durch ist.
Ich hätte eigentlich gedacht, der Button macht einen event, der wird in der Erzeuger-Schleife in die Queue eingereiht, und fertig ist. Aber der Button bleibt unten, bis die betreffende Verbraucher-Queue abgearbeitet ist. Also nicht asynchron, nicht parallel.
Die GUI bleibt blockiert. Das gefällt mir nicht…![Dry Dry](images/smilies/lvfsmilies/fun/dry.gif)
Kann man das so abändern, dass die GUI immer funktioniert, und die Erzeugerschleife und die Verbraucherschleife parallel ausgeführt werden ?
Noch lieber hätte ich, wenn praktisch jeder case meiner Verbraucherschleife parallel läuft, quasi in einem eigenen Thread,
aber ich will ja nicht zu extrem werden.
Ich verwende LV8.6, XP und habe 4 Cores.
Werner
ich habe noch eine Frage zum Design "Erzeuger/Verbraucher:
Ich verwende Erzeuger-Verbraucher um das Erzeugen der Ereignisse von der Verarbeitung zu trennen.
So wie ich das sehe, werden die Ereignisse ja in eine Queue gestellt, aus der sich dann die Verbraucherschleife bedient.
Also Beispiel: ein Button "Hallo" wird gedrückt, die Erzeugerschleife stellt den String Hallo in die Queue.
Dort holt die Verbraucherschleife den String Hallo raus, und verarbeitet den.
Ich stelle nun fest, dass wenn diese Verarbeitung z.B. 10 sekunden dauert, das ganze GUI 10 Sekunden blockiert ist.
Ich verstehe nicht, wieso der Button „Hallo“ (andere Buttons genauso…) gedrückt bleibt, bis der Code der Verbraucher-Case durch ist.
Ich hätte eigentlich gedacht, der Button macht einen event, der wird in der Erzeuger-Schleife in die Queue eingereiht, und fertig ist. Aber der Button bleibt unten, bis die betreffende Verbraucher-Queue abgearbeitet ist. Also nicht asynchron, nicht parallel.
Die GUI bleibt blockiert. Das gefällt mir nicht…
![Dry Dry](images/smilies/lvfsmilies/fun/dry.gif)
Kann man das so abändern, dass die GUI immer funktioniert, und die Erzeugerschleife und die Verbraucherschleife parallel ausgeführt werden ?
Noch lieber hätte ich, wenn praktisch jeder case meiner Verbraucherschleife parallel läuft, quasi in einem eigenen Thread,
![Tongue Tongue](images/smilies/tongue.gif)
Ich verwende LV8.6, XP und habe 4 Cores.
Werner