Подтвердить что ты не робот

С++ std:: async vs async/await в С#

Мне интересно, будет ли новая функция С++ std::async сопоставима с двумя ключевыми словами С# async/await или нет, и если не почему?

4b9b3361

Ответ 1

Не совсем, если я читаю эту std:: асинхронную документацию правильно.

Функция aync/await С# 5 включает сложное преобразование компилятора асинхронного метода, так что вы можете писать код, который выглядит довольно синхронно, но имеет точки асинхронности. Компилятор создает для вас конечный автомат, создает соответствующие обратные вызовы и т.д.

EDIT: Хотя я ранее считал, что std::async просто заставил вас явно передать обратный вызов, он выглядит более примитивным, чем это. В любом случае, я считаю, что это в основном/полностью функция библиотеки, тогда как асинхронные методы С# 5 - это в основном языковая функция с поддержкой библиотеки.

EDIT: Как уже отмечалось в комментариях, выглядит на своем пути для VС++...

Ответ 2

CPPASYNC (предоставляется в другом ответе) выглядит так, как вы ищите. "Асинхронная" часть проста и производительность выглядит неплохо (вероятно, лучше, чем реализация С#). Это уродливое b/c вам нужны специальные обертки "Await" вокруг асинхронных вызовов обратного вызова. Некоторые сети Boost предоставляются, и их легко сделать, но вы не можете просто "Подождать": Async любой метод/функция,

В рамках функции Async ожидайте:
- Функция Async
- Обертка ожидания (простая для создания) вокруг асинхронной функции (которая выполняет обратный вызов)