7
votes

Boost Asio et C ++ 11 est-il un bon match?

Un client de la mine veut que je fournisse un serveur fiable élevé, qui reçoit des matrices de données via des sockets. Il s'attend à ce qu'il soit en C ++

Cela fait longtemps que je faisais C ++ plein temps, donc je lisais un peu. ASIO semble être un bon pari pour la mise en réseau en C ++ et C ++ 11 semble être une excellente nouvelle version de C ++ avec de nombreuses nouvelles fonctionnalités.

Ma question: Est-il possible d'utiliser à la fois de manière fiable? Est-ce que ça fait du sens? Devrais-je éviter certaines fonctionnalités C ++ 11 telles que Lambdas?


0 commentaires

4 Réponses :


7
votes

Vous pouvez utiliser les deux d'entre eux avec aucun problème. Pour les choses mises en œuvre à la fois à Boost et au C ++ 11 stl, c'est votre choix qui à utiliser. Dans la plupart des cas, cela fait très peu de différence. Si vous utilisez Boost, vous serez également portable sur C ++ 03 plates-formes (au moins, cette partie de votre code sera si elle n'utilise pas directement C ++ 11 caractéristiques directement).

Boost a été soigneusement conçu pour pouvoir profiter des caractéristiques C ++ 11 où elles sont disponibles sans avoir à fournir une interface "muette" ou une performance médiocre pour supporter où elles ne sont pas.

Et si vous avez besoin de bons E / S asynchrones, vous avez besoin de la bibliothèque pour la fournir. Boost est assez difficile à battre, que vous utilisiez C ++ 11 ou non.

Si votre question est "y a-t-il une raison particulière, je ne voudrais pas utiliser boost avec C ++ 11 ou C ++ 11 avec boost", la réponse est non. Si vous avez besoin d'une fonctionnalité Boost fournit, comme ASIO, et il suffit de prendre en charge C ++ 11 plates-formes, alors ils sont une correspondance parfaite pour votre application.


0 commentaires

7
votes

Je fondrais "C ++ 11 Caractéristiques à éviter" principalement sur votre compilateur cible planifié. Je ne vois aucune raison d'éviter les lambdas - tous les compilateurs majeurs les soutiennent déjà et ils fournissent une amélioration substantielle de la lisibilité.

D'autre part, selon le (s) compilateur (s) que vous vous souciez, vous voudrez peut-être éviter des éléments tels que des modèles variadiques et / ou des listes d'initialistes conçues.


3 commentaires

Une autre chose à faire attention est la prise en charge de Regex, la bibliothèque fournie avec ex. GCC 4.7 semble être complet, mais certaines choses telles que Regex_search ne fonctionnent pas.


@jerryCoffin Compiler GCC serait mon meilleur pari vrai? (Je vais développer sur Mac et ciblera une boîte indéterminée (à partir de pourtant) UNIX). Ou clique est-il un choix viable encore? Je l'ai utilisé dans le développement de l'iPhone Xcode et il est difficile de ne pas être excité avec son analyseur statique


@TOAD: GCC est certainement pris en charge sur plusieurs plates-formes. À l'heure actuelle, Clang convient à OS / X, semi-raisonnable sur Linux, inutilisable sous Windows et n'a pas été porté à la plupart des autres plates-formes.



6
votes

Voir, Boost.Asio est une bibliothèque réseau pour la programmation entraînée par événement - Beaucoup de rappels, C ++ 11 Lambda facilite la rédaction de rappels.

Fondamentalement Combinaison de C ++ 11 et ASIO permet de développer et de rendre votre code beaucoup plus propre et lisible


1 commentaires

Les Lambdas sont également plus rapides que de faire des rappels via liés et certainement plus faciles que de rédiger des foncteurs personnalisés pour tout



2
votes

L'ASIO Documentation spécifiquement Mentions C ++ 11 Support


0 commentaires