Seite 1 von 1

Non-Blocking Event

Verfasst: 11. April 2007 12:24
von stonecold
Hallo,

ich möchte eine Application mit zwei Eventloops erstellen, ohne die zweite Loop in einem seperatem Thread laufen zu lassen.

Hier habe ich mal ein Beispiel wie es mit OmniOrb, einer Corba-Implementierung, gelöst werden kann.


.... while (!done) {
if (orb->work_pending())
orb->perform_work(); ....

anstatt:

... orb->run(); ....

Kann ich, in Anlehnung an dieses Beispiel, in diesem Beispiel die Qt Eventloop integrieren?
Falls ja - wie?

Kann die Qt Eventloop ggf. in einen QThread laufen. Anderum ist es nämlich nicht möglich.

Verfasst: 11. April 2007 12:44
von upsala
Welchen Sinn sollte eine 2. Event-Loop machen?

Verfasst: 11. April 2007 13:22
von stonecold
Bei der zweiten Eventloop handelt es sich um eine Ereignissteuerung auf die eine GUI aufgesetzt werden soll. Diese kann allerdings nur aus dem Mainthread heraus laufen.

Mehr siehe: CORBA -> CORBA SERVICES -> EVENT SERVICE

:?: :?: :?:

Verfasst: 11. April 2007 17:30
von Christian81
Das geht nur mit einem zweiten Thread

Verfasst: 11. April 2007 19:54
von stonecold
Danke für die Antwort.

Ich hoffe es ist klar geworden was ich machen will. Ich will die beiden Eventloop durch die Whileschleife ersetzten und so im Prinzip zwei Eventloops kombinieren.

Das aufgeführte Beispiel ist aus dem Buch "Advanced CORBA Programming with C++" und soll zeigen wie man eine derartige Corba-Anwendung mit einer GUI kombiniert.

Sollte das also tatsächlich nicht so funktionieren, kann ich dann wenigsten die Gui-komponente aus dem Thread heraus benutzen da ich, wie erwähnt, die andere Eventloop in der Main brauche?

Verfasst: 11. April 2007 19:57
von Christian81
Man kann nur im Main-Thread auf die gui 'zugreifen' - also muss wohl das andere in einen anderen Thread.