Алексей Кутумов, Coroutines everywhere

Алексей Кутумов – старший программист в компании АО “Лаборатория Касперского”. Алексей работает в команде, которая разрабатывает полнодисковое шифрование (Full Disk Encryption), занимается дизайном и разработкой общих компонент, которые должны выполняться в разных окружениях: EFI приложения, драйвера ОС Windows и пользовательский режим.

Не так давно Гор Нишанов представил свой доклад: C++ Coroutines a negative overhead abstraction. В этом докладе Гор упомянул, что предложенный дизайн корутин позволяет их использовать практически в любых окружениях, в том числе и с “бедным” C++ рантаймом.
Я решил попробовать запустить корутины в следующих окружениях: обычное приложение, драйвер ОС Windows, EFI приложение. Только в одном из этих окружений есть полноценный C++ рантайм и поддержка исключений, в остальных ничего этого нет. Более того, EFI приложение вообще выполняется до старта ОС.
Я хочу рассказать о том, как мне удалось запустить корутины в этих окружениях, поговорим о том, какие проблемы существуют в асинхронном системном программировании и как их можно обойти.

Яндекс.Метрика