wxWidgets: GUI + Sockets + Threads



  • Hallo,
    ich schreibe gerade einen kleinen Chat-Client mit wxWidgets (wxSocketClient) und bin mir über das Grob-Design noch nicht ganz im Klaren.
    Zunächst würde ich gerne, um zu vermeiden, dass die GUI "hängenbleiben" kann, die komplette Socket-Kommunikation in einem Thread laufen lassen.
    Jetzt habe ich das Problem, daß ich in diesem Thread gleichzeitig auf Daten vom Server warten muss, und gleichzeitig auf Anfragen vom Main-Thread (z.B. über wxConditions, o.ä.), wenn der User etwas an den Server schicken möchte. (Ich möchte auf jeden Fall das Read() und Write() auf den Socket vom selben Thread aus machen; ich glaube das geht sowieso nicht anders in wxWidgets.)
    So ... unter Windows hätte ich wohl mit WaitForMultipleObjects() gearbeitet. Unter wxWidgets habe ich aber noch nichts vergleichbares gefunden.

    Hat jemand Vorschläge, Tipps?
    Danke schonmal ...

    Ciao
    - Mark



  • Du kannst auch aus zwei verschiedenen Threads auf ein Socket lesen und schreiben. Du könntest also fürs Senden und fürs Empfangen je einen Thread machen.

    Oder andere Möglichkeit: Bei WxWidgets kannst du bestimmt ein Event registrieren, dass dir sagt, wenn du Daten von einem Socket lesen und in ein Socket schreiben kannst, ohne dass es blockiert. Setzt du jetzt noch das Socket auf non-Blocking, sollte dein GUI auch nicht hängen bleiben.



  • Eine andere Lösung scheint mir wohl wirklich nicht übrig zu bleiben. 😉

    Danke
    Ciao


Anmelden zum Antworten