Является ли boost asio и c++11 хорошим совпадением?

мой клиент хочет, чтобы я сделал высокопроизводительный, надежный сервер, который получает потоки данных через сокеты. Он ожидает, что это будет на c++

прошло некоторое время, что я делал c++ полный рабочий день, поэтому я немного читал. Asio кажется хорошей ставкой для сетей на c++, а c++11 кажется отличной новой версией C++ с множеством новых функций.

мой вопрос: Можно ли использовать как надежную? В этом есть смысл? Должен ли я избегать определенных функций c++11 как лямбда?

4 ответов


Я бы основал "функции C++11, чтобы избежать" в первую очередь на вашем запланированном целевом компиляторе(компиляторах). Я не вижу причин избегать lambdas - все основные компиляторы уже поддерживают их, и они обеспечивают существенное улучшение читаемости.

с другой стороны, в зависимости от компилятора(ов), о котором вы заботитесь, вам может потребоваться/нужно избегать таких вещей, как вариационные шаблоны и/или списки инициализаторов.


вы можете использовать их вместе без проблем. Для вещей, реализованных как в Boost, так и в C++11 STL, это ваш выбор, который нужно использовать. В большинстве случаев это не имеет большого значения. Если вы используете Boost, вы также будете переносимы на платформы C++03 (по крайней мере, эта часть вашего кода будет, если он не использует функции C++11 напрямую).

Boost был тщательно разработан, чтобы иметь возможность использовать возможности C++11, где они доступны без необходимости предоставлять "тупой" интерфейс или плохая производительность для поддержки там, где их нет.

и если вам нужен хороший асинхронный ввод-вывод, вам нужна библиотека для его предоставления. Boost довольно трудно победить, используете ли вы C++11 или нет.

Если ваш вопрос: "есть ли какая-то конкретная причина, по которой я не хотел бы использовать Boost с C++11 или C++11 с Boost", ответ-нет. Если вам нужна поддержка некоторых функций, таких как asio, и вам нужно только поддерживать платформы c++11, то они идеальны матч для вашего приложения.


видите, увеличить.asio-это сетевая библиотека для программирования на основе событий-множество обратных вызовов, C++11 lambda упрощает написание обратных вызовов.

в основном комбинация C++11 и Asio значительно упрощает разработку и сделает ваш код более чистым и читаемым


в асио документация конкретно упоминает поддержку c++11