2013-05-16 4 views
6

Was ist die grundlegende Struktur eines Ereignis-Loop-System in C++ 11? Wie werden die Schlüsselelemente (wie Message Queue, Message Dispatcher, Signal) implementiert? Zum Beispiel, brauche ich noch eine std::queue<Message>, eine std::mutex und eine std::condition_variable als was habe ich in C++ 98 + boost Weg? Auch die Leistung spielt in der von mir angestrebten Lösung eine Rolle.Die C++ 11 Möglichkeit, eine Ereignisschleife zu erstellen

+5

Im Standard gibt es keine High-Level-Klassen wie Nachrichtenwarteschlangen. Sie müssen also Ihre eigenen Typen aus den genannten Typen erstellen. – juanchopanza

+5

Wenn die Leistung wichtig ist, bleiben Sie bei den Mechanismen, die für das Zielbetriebssystem vorgesehen sind. Verwenden Sie zum Beispiel "kqueue", wenn Sie OS X anzielen, oder "epoll", um unter Linux die besten Ergebnisse zu erzielen. C++ 11 hat damit nichts zu tun. –

+2

Wenn Sie Boost bereits verwenden, können Sie Boost.Asio verwenden. – beerboy

Antwort

2

Tun Sie es ungefähr so, wie Sie es in C++ 98 getan hätten. Sie können plattformspezifische Dinge wie pthread_t, pthread_mutex und pthread_cond durch standardisierte Äquivalente ersetzen (std :: thread, std :: {rekursive _,} {timed _,} mutex und std :: condition_variable {, _ any}), aber die Grunddesign ist das gleiche.

Wie @Beerboy erwähnt, Boost.Asio könnte ein guter Ort sein, um zu starten, obwohl AFAIK es für C++ 11 noch nicht aktualisiert wurde.

Verwandte Themen