![](https://squidex.jugru.team/api/assets/srm/2h3gDx9nrsOYEFe76q8zb2/davydov.jpg?cache=3600&width=74&height=74&mode=CropUpsize)
Андрей Давыдов
Компания: JetBrains
Тип доклада: Доклад
Доклад посвящен разбору одной часто встречающейся на практике проблемы — выносу тяжелой операции с UI-потока. Разумеется, сама проблема не нова и даже не уникальна для C++. Но в отличие от языков, со сборкой мусора в C++ необходимо предпринимать нетривиальные усилия для того, чтобы ресурсы, используемые фоновой задачей, но принадлежащие основному потоку, жили достаточно долго. Очевидное решение — использовать повсюду shared_ptr, но иногда требуется что-то потоньше (и поэффективнее).
Еще одна нетривиальная часть работы с фоновыми операциями — реализация отмены. И конечно же, поскольку речь идет о C++, и работа с ресурсами, и поддержка отмены должны быть максимально эффективными, с минимумом аллокаций и mutex-ов.
Мы поочередно рассмотрим, как это все можно написать, с тремя основными механизмами асинхронного программирования: callback-ами, (самописными) future-ами и С++20 корутинами, какие у каждого из подходов tradeoffs. В конце доклада будет затронута модная в последнее время (не только и не столько в C++) концепция Structured Concurrency.
Для понимания части доклада от слушателей ожидается поверхностное знакомство с C++20 корутинами.
Компания: JetBrains
Компания: JetBrains