Vergleichbare Struktur wie die Events aus der WinApi oder VCL?



  • Tach...

    Wie ist das eigentlich mit der Boost? Nehmen wir mal an ich möchte Kontrollstrukturen ähnlich der Events aus der Winapi oder der Api Kapselung TEvent der VCL verwenden, um Threads zu steuern.

    Vor allem möchte ich die Funktionalität von WaitForMultipleObjects der WinApi, WaitFor u.Ä. verwenden.

    Bisher habe ich noch nichts hierzu gefunden. Bietet denn die Kombination C++ STL, Boost und GTKmm ähnliche Funktionen?

    Zur Info: Ich suche gerade in Boost::Signals, habe aber diese Wartefunktionalität und den Prozessübergreifenden Einsatz noch nicht gefunden. Vielleicht hat jemand Tips für mich, die mir die Suche beschleunigen.



  • Boost.Signals hat 0% was mit Threads und Wartefunktionen zu tun.
    Wenn es um Threading geht, dann schau mal in boost::thread rein. Aber das ist auch nur ein gemeinsamer kleiner Nenner bzgl. Threading.



  • Ich will eigentlich mit Boost Threads arbeiten... Aber leider gibts die Funktionalität die mir waitformultipleobjects in Kombination mit den Events der API bietet nicht.

    PThreads habe ich mir auch gerade angeschaut.

    Ich werde mal versuchen die Boost zu verwenden, und das Warten über die Api zu lösen. Also möglichst viel über die Boost und die STL zu programmieren.

    Bzw. möchte ich mir Qt nochmal anschauen, was es da an Funktionalitäten neben der GUI gibt.



  • Die Funktionalität "auf alle/eins dieser events/mutexen/... warten" gibt's in pthreads AFAIK nicht, daher stellen die ganzen cross-platform libs sowas auch nicht zur Verfügung.

    Boost.Thread stellt auch keine EVENTs zur Verfügung sondern nur Condition Variablen. Da die Condition Variablen aber nicht 1:1 EVENTs verwenden kannst du die nicht mit WaitForMultipleObjects verwenden.

    Aber erzähl mal wofür du WaitForMultipleObjects brauchst, vielleicht gibts da ne andere evtl. sogar bessere Möglichkeit...



  • Ein Thread, eine While Schleife, ein waitfor.... und dahinter eine Case-Struktur. Je nach Event wird der entsprechende Code ausgeführt und der Thread geht danach wieder schlafen. Ich beschreibs mal als abstrakter Zustandsautomat. 😃
    Die Events lösen einfach die unterschiedlichen Zustände aus. Wichtig ist mir einfach die Möglichkeit, dass ich die Threads nicht explizit wieder starten muss. Weiterhin möchte ich nicht ständig pollen.

    Die Steuerung über Events und waitfor-Befehle verwende ich dann noch an diversen anderen Stellen.

    Von Messages und der Message-Queue war ich nicht so begeistert. Da war schnell Chaos hinein zu bringen. Und ich brauche einen definierten Ablauf.

    Zur Zeit schwanke ich zwischen Boost & GTKmm und Qt. Wir haben uns gestern unterhalten und bleiben auf Windows Rechnern, da die Bedienmannschaft, die da ran soll so rudimentäre Kenntnisse hat, dass sie schon mit XP fast überfordert sind. Mit Linux müssten wir nur noch Support leisten. Deswegen werde ich wohl die Events aus der Api verwenden...

    Aber Vorschläge sind trotzdem willkommen. Vielleicht sag ich mir ja DAS isses.


Anmelden zum Antworten