Начало основного контента

Фоновыe задачи: Управления ресурсами и отмена

День 4

RU

Доклад посвящен разбору одной часто встречающейся на практике проблемы — выносу тяжелой операции с UI-потока. Разумеется, сама проблема не нова и даже не уникальна для C++. Но в отличие от языков, со сборкой мусора в C++ необходимо предпринимать нетривиальные усилия для того, чтобы ресурсы, используемые фоновой задачей, но принадлежащие основному потоку, жили достаточно долго. Очевидное решение — использовать повсюду shared_ptr, но иногда требуется что-то потоньше (и поэффективнее).

Еще одна нетривиальная часть работы с фоновыми операциями — реализация отмены. И конечно же, поскольку речь идет о C++, и работа с ресурсами, и поддержка отмены должны быть максимально эффективными, с минимумом аллокаций и mutex-ов.

Мы поочередно рассмотрим, как это все можно написать, с тремя основными механизмами асинхронного программирования: callback-ами, (самописными) future-ами и С++20 корутинами, какие у каждого из подходов tradeoffs. В конце доклада будет затронута модная в последнее время (не только и не столько в C++) концепция Structured Concurrency.

Для понимания части доклада от слушателей ожидается поверхностное знакомство с C++20 корутинами.

  • #concurrency
  • #asynchronous_programming
  • #future
  • #coroutines

Спикеры