Тёмный

Павел Новиков - Учимся готовить C++ корутины на практике 

C++ User Group
Подписаться 15 тыс.
Просмотров 9 тыс.
50% 1

Подробнее о конференции C++ Russia: jrg.su/W8skjE
- -
В С++20 появился мощный инструмент - корутины. Однако в данный момент в стандартной библиотеке C++ практически нет средств для удобной работы с корутинами «из коробки». Поэтому нужно научиться их готовить, чтобы использовать этот инструмент с пользой и эффективно. Этим мы и займёмся.
Разберёмся, как использовать корутины с нуля для работы с асинхронными задачами.

Наука

Опубликовано:

 

15 июн 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 6   
@sergeyvlasov207
@sergeyvlasov207 2 месяца назад
Спасибо автору, постарался объяснить все четко. Но по факту, просто пришили сороконожке 41-ю ногу. А зачем? А чтобы было...
@cppprograms5868
@cppprograms5868 3 года назад
Давайте делайте уроки по С++!!!
@DART2WADER
@DART2WADER 3 года назад
Это к Константину Владимирову на канал.
@user-mt9cu8vw1p
@user-mt9cu8vw1p 4 месяца назад
Что за корутин и зачем он нужен не возможно понять из этих слов
@andy.1331
@andy.1331 3 года назад
FinalAwaitable на 35-м слайде тоже _должен_ реализовать симметричную передачу управления приостановленной (или отсутствующей) корутине. Просто возвращайте всегда из метода FinalAwaitable::await_suspend значение promise.continuation Также непонятно зачем определять собственный оператор co_await для Task. Кстати, если в терминологии promise, то почему Task, а не future? Да ещё и с большой буквы. Разве C# для нас уже стал абсолютным источником замещения наших собственных творческих замыслов и правил С++? :-) Проще и понятнее сделать сам Task (или future) awaitable без переопределения оператора co_await. Тем более, что это действительно просто. Лучше, наверное, привести пример с использованием некоего пула потоков для реализации асинхронного выполения задачи, вместо того, чтобы говорить "я так сделал, но вы так никогда не делайте". Тем более, что для Windows это _вообще_ не проблема - для Linux не знаю, не использую
@PaulSkeptic
@PaulSkeptic 3 года назад
Для *FinalAwaitable* теоретически можно было бы сделать симметричную передачу управления, но незачем, потому что *FinalAwaitable* используется только на завершении выполнения корутины, т.е. текущую корутину нет смысла возобновлять при симметричной передаче управления, потому что она по сути уже завершилась. Всегда возвращать *promise.continuation* нельзя, потому что продолжение не всегда является валидной корутиной (поэтому есть проверка перед возобновлением). Можно было бы возвращать *promise.continuation* _или_ *std::noop_coroutine()* при симметричной передаче управления, но это получаются приседания ради приседаний, профит такого подхода не понятен. Определение *operator co_await* - _самый простой_ способ (из по крайней мере трёх) сделать возможность ожидать объект какго-либо типа (т.е. звать *co_await* на таком объекте).
Далее
The Pointer to Implementation (pImpl) idiom in C++
6:54
Здесь упор в процессор
18:02
Просмотров 334 тыс.
Главная Ai фишка Samsung
0:37
Просмотров 192 тыс.