Ist Boost Asio und C ++ 11 eine gute Übereinstimmung?

7

Ein Kunde von mir möchte, dass ich einen leistungsstarken, zuverlässigen Server erstelle, der Datenströme über Sockets empfängt. Er erwartet, dass es in C ++ ist.

Es ist schon eine Weile her, dass ich c ++ Vollzeit gemacht habe, also habe ich ein bisschen nachgelesen. Asio scheint eine gute Wette für die Vernetzung in C ++ zu sein, und C ++ 11 scheint eine großartige neue Version von C ++ mit vielen neuen Funktionen zu sein.

Meine Frage: Kann man beides zuverlässig nutzen? Macht das Sinn? Sollte ich bestimmte C ++ 11 Funktionen wie Lambdas vermeiden?

    
Toad 08.09.2012, 12:34
quelle

4 Antworten

6

Ich würde "C ++ 11 features" hauptsächlich auf Ihren geplanten Zielcompilern basieren lassen. Ich sehe keinen Grund, lambdas zu vermeiden - alle großen Compiler unterstützen sie bereits, und sie bieten eine wesentliche Verbesserung der Lesbarkeit.

Auf der anderen Seite, abhängig von den Compilern, die Ihnen wichtig sind, sollten Sie Dinge wie variable Vorlagen und / oder abgestufte Initialisierungslisten vermeiden wollen / müssen.

    
Jerry Coffin 08.09.2012, 12:46
quelle
6

Sie können die beiden ohne Probleme verwenden. Für Dinge, die sowohl in Boost als auch in der C ++ 11 STL implementiert sind, ist es Ihre Entscheidung, welche Sie verwenden sollen. In den meisten Fällen macht es wenig Unterschied. Wenn Sie Boost verwenden, sind Sie auch auf C ++ 03-Plattformen portierbar (zumindest wird dieser Teil Ihres Codes sein, wenn C ++ 11-Funktionen nicht direkt verwendet werden).

Boost wurde sorgfältig entwickelt, um die Vorteile von C ++ 11-Funktionen nutzen zu können, wo sie verfügbar sind, ohne dass eine "dumbled down" -Schnittstelle oder schlechte Leistung zur Verfügung steht, wo sie nicht unterstützt werden.

Und wenn Sie eine gute asynchrone E / A benötigen, benötigen Sie eine Bibliothek, um sie bereitzustellen. Boost ist ziemlich schwer zu schlagen, ob Sie C ++ 11 verwenden oder nicht.

Wenn Ihre Frage lautet: "Gibt es einen bestimmten Grund, warum ich Boost mit C ++ 11 oder C ++ 11 mit Boost nicht verwenden möchte?" lautet die Antwort nein. Wenn Sie eine Funktion benötigen, die Boost bietet, wie zB asio, und nur C ++ 11-Plattformen unterstützen müssen, dann sind sie die perfekte Ergänzung für Ihre Anwendung.

    
David Schwartz 08.09.2012 12:39
quelle
5

Siehe, boost.asio ist eine Netzwerkbibliothek für ereignisgesteuerte Programmierung - viele Rückrufe, C ++ 11 Lambda macht das Schreiben von Rückrufen sehr einfach.

Grundsätzlich ist die Kombination von C ++ 11 und Asio sehr viel einfacher zu entwickeln und würde Ihren Code deutlich sauberer und lesbarer machen.

    
Artyom 08.09.2012 13:47
quelle
2

Die asio Dokumentation erwähnt ausdrücklich c ++ 11 Unterstützung

    
Sam Miller 09.09.2012 19:19
quelle

Tags und Links