Мне интересно, будет ли новая функция С++ std::async
сопоставима с двумя ключевыми словами С# async/await или нет, и если не почему?
С++ std:: async vs async/await в С#
Ответ 1
Не совсем, если я читаю эту std:: асинхронную документацию правильно.
Функция aync/await С# 5 включает сложное преобразование компилятора асинхронного метода, так что вы можете писать код, который выглядит довольно синхронно, но имеет точки асинхронности. Компилятор создает для вас конечный автомат, создает соответствующие обратные вызовы и т.д.
EDIT: Хотя я ранее считал, что std::async
просто заставил вас явно передать обратный вызов, он выглядит более примитивным, чем это. В любом случае, я считаю, что это в основном/полностью функция библиотеки, тогда как асинхронные методы С# 5 - это в основном языковая функция с поддержкой библиотеки.
EDIT: Как уже отмечалось в комментариях, выглядит на своем пути для VС++...
Ответ 2
CPPASYNC (предоставляется в другом ответе) выглядит так, как вы ищите. "Асинхронная" часть проста и производительность выглядит неплохо (вероятно, лучше, чем реализация С#).
Это уродливое b/c вам нужны специальные обертки "Await" вокруг асинхронных вызовов обратного вызова. Некоторые сети Boost предоставляются, и их легко сделать, но вы не можете просто "Подождать":
Async любой метод/функция,
В рамках функции Async ожидайте:
- Функция Async
- Обертка ожидания (простая для создания) вокруг асинхронной функции (которая выполняет обратный вызов)