Size: a a a

Конференция C++ Russia

2021 July 21

*

*cyberzx in Конференция C++ Russia
Ну я конечно разберусь и может напишу статью, как с ними работать. Но сейчас такой информации нет. Самое полезное что можно почитать это folly/experimental/coro. Спасибо программистам в ФБ за развёртнутые комментарии в коде
источник

AD

Alexander Dudin in Конференция C++ Russia
Сколько докладов по корутинам не смотрел, так ничего и не понял 😁 Ждем короче доклад для полных нубов
источник

AS

Alexey Solomin in Конференция C++ Russia
Можно посмотреть корутины, например, в JS и понять почему они такие вплоть до ключевых слов ^^
источник

AP

Antony Polukhin in Конференция C++ Russia
Вы сравниваете "памятку по безопасности полётов на пассажирском самолёте" с "мануалом по построению двигателей истребителей"

Возьмите asio и используйте C++ корутины как в Go - не задумываясь. Хотите написать свой Go, но без сборщика мусора и оверхеда по памяти - тогда читайте про внутренне устройство плюсовых корутин
источник

AP

Antony Polukhin in Конференция C++ Russia
А что именно не понятно, что именно хочется понять?
источник

AP

Antony Polukhin in Конференция C++ Russia
* как раз готовлю доклад по корутинам, хочу узнать, что поподробнее рассказать
источник

ES

Egor Suvorov in Конференция C++ Russia
У меня они не соотнеслись ни с преобразованием в конечный автомат, ни с continuation-passing style. Потому что как-то слишком много движущихся частей.

В Python всё кажется сильно проще, например: базовый блок — генератор, а это объект с методом next. Вот и автомат. Ну, ещё send есть. На самом деле там тоже дебри, но они как-то очень красиво спрятаны и не протекают.

В Kotlin тоже неплохо, но там начинается путаница из-за CoroutineScope/Context.

А в плюсах надо всегда семь или больше штук реализовывать, некоторые тривиально. Но из каких соображений они возникли, как написать свой event loop (хотя бы однопоточный) — это всё в картинку пока не собралось.
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Хорошо бы, чтобы доклад начинался с пары тройки показательных примеров. Мол, вот без stackless coroutines получается три простыни нечитабельного кода, а с stackless coroutines всего-то с десяток строчек.

Просто у некоторых старперов (вроде меня) нет должного понимания полезности именно stackless coroutines для сколько-нибудь широкого круга задач. А когда непонятно зачем фича нужна, то и стимула глубоко в нее погружаться нет.
источник

DK

Dmitry Kazakov in Конференция C++ Russia
Я кстати тоже не понял, как можно корутины для tcp клиента использовать. Они же вроде в одном потоке только работают (в отличие от Го). Хотя я не очень в эту тему погружался
источник

AD

Alexander Dudin in Конференция C++ Russia
Хотелось бы больше примеров использования корутин, например, как сделать с нуля асинхронное чтение из файла/сокета на корутинах. Сравнить этот код с asio, какие есть плюсы и минусы. Какие лучшие практики есть по работе с корутинами.
В докладах же обычно  описывается внутреннее устройство корутин, в какой именно код транслируются co_await, co_yield, и прочие детали.
То есть это аналог докладов по C#/Python в которых описывается внутреннее устройство механизма async/await. А хотелось бы доклад просто с примерами использования, без сильного погружения в детали.
источник

ES

Egor Suvorov in Конференция C++ Russia
Я так понимаю, что использовать корутины напрямую нельзя — это низкоуровневая штука, примерно как указатели.
источник

ES

Egor Suvorov in Конференция C++ Russia
Всегда нужна обвязка в виде конкретной библиотеки и стандартной такой нет
источник

NK

Nickolay Kononov in Конференция C++ Russia
Будет
источник

AP

Antony Polukhin in Конференция C++ Russia
Изкоробочные решения пока - только asio. Стандартной библиотеки для работы с крутинами - нет
источник

TS

Timur Safin in Конференция C++ Russia
еще в seastar завезли
источник

AP

Antony Polukhin in Конференция C++ Russia
Корутина ~= callback
Во сколько потоков захотите коллбеки/корутины выполнять, во столько и будут выполняться :)
источник

TS

Timur Safin in Конференция C++ Russia
кстати, а что с userver? Завозите туда сопрограммы уже?
источник

AD

Andrey Davydov in Конференция C++ Russia
По-моему, тут фундаментальное непонимание. С++ coroutines сами по себе не делают код асинхронным. Если у вас есть только синхронное API Blob ReadDataFromSocket(Socket&) то корутины не помогут написать асинхронный код использующий это API, зато если у вас уже есть асинхронное API void ReadDataFromSocket(Socket&, Callback) с помощью корутин им можно будет удобнее пользоваться.
источник

AP

Antony Polukhin in Конференция C++ Russia
Ну он с самого начала на корутинах (на stackfull)
источник

TS

Timur Safin in Конференция C++ Russia
это то я знаю, но вот именно с co_await/co_return ? (ну или как минимум чтобы побенчить сравнение с текущей реализацией)
источник