C ++ std :: async против async / await в C # - PullRequest
18 голосов
/ 31 марта 2011

Мне интересно, если новая функция c ++ std::async вполне сопоставима с двумя ключевыми словами C #: асинхронным / ожидающим или нет, и если нет, то почему?

Ответы [ 2 ]

23 голосов
/ 31 марта 2011

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

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

РЕДАКТИРОВАТЬ: Хотя ранее я полагал, что std::async просто заставил вас явно передать обратный вызов, похоже, он еще более примитивен, чем этот.В любом случае, я считаю, что это в основном / полностью функция library , в то время как асинхронные методы C # 5 - это, в основном, функция language с поддержкой библиотеки.

EDIT: как отмечено далее вкомментарии похоже, что он уже в пути для VC ++ ...

1 голос
/ 09 февраля 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...