Анатомия асинхронных движков - Антон Полухин

  Рет қаралды 5,904

Yandex for Developers

Yandex for Developers

2 жыл бұрын

Тезисы: В последние годы практически во всех языках программирования набирают популярность асинхронные движки с корутинами. Давайте посмотрим, как эти движки устроены и что в них такого хорошего для I/O- bound приложений! Посмотрим, как люди жили до современных корутин, рассмотрим базовые компоненты асинхронного движка, и окунёмся в дивный мир движковых оптимизаций и хитростей:
использование стека как «кучи»;
мьютексы, которые не блокируют потоки;
таймеры и поколения;
отмены.

Пікірлер: 15
@sovrinfo
@sovrinfo 2 жыл бұрын
Спасибо за видео.Коммент в поддержку!
@user-bl4mm5pr9g
@user-bl4mm5pr9g 9 ай бұрын
Спасибо!
@Alexander-mj3jk
@Alexander-mj3jk Жыл бұрын
А что под капотом у стакфулл короутин? Каким образом получается сохранить локальные переменные в процедуре?
@usmanbaybikov9462
@usmanbaybikov9462 2 жыл бұрын
Все видео было ощущение , что лектор говорить про шедуллер Go)
@SharplEr
@SharplEr Жыл бұрын
Ну это одна и так же идея.
@rugleb
@rugleb 2 жыл бұрын
Создание потока на питоне - не проблема. Проблема в том, что потоки не будут работать параллельно.
@jekapsk
@jekapsk Жыл бұрын
Смотря какой движок питона использовать) есть реализации без GIL, но тогда придется писать tread-safe код)
@rugleb
@rugleb Жыл бұрын
@@jekapsk по умолчанию все понимают о каком движке речь) А так конечно, можно пытаться и мертвого воскрешать
@alexandersmirnov4274
@alexandersmirnov4274 2 жыл бұрын
объясните стекфул vs стеклесс корутины?
@cdriper
@cdriper 11 ай бұрын
стекфул ничем не отличается от классического кода со стеком стеклесс код хранит все "локальные" переменные не на стеке, а в специально отведенном регионе памяти (который обычно располагают в куче) главное преимущество такого подхода -- расход памяти ты должен выделить ровно столько памяти, сколько реально надо для работы конкретной корутины в случае классического стека ты всегда выделяешь на глазок и делаешь это с запасом, что приводит к перерасходу памяти недостатоки стеклесс -- необходимость отмечать все корутины специальным образом и невозможность их использования как обычных методов плюс современные компиляторы, увы, не могут предсказать размер региона под переменные на этапе компиляции и память нужно выделять каким-то образом в рантайме
@vlad071096
@vlad071096 Жыл бұрын
Где-нибудь можно найти информацию, почему переключение контекста (уровня ОС) такое дорогое? Вот на 5:53, например, написано total costs, including cache invalidation? Какие кеши инвалидируются? В современных процессорах physically-tagged кеши (VIPT или PIPT), их не надо инвалидировать при переключении контекста. TLB для переключения на тред того же процесса инвалидировать не надо, и вообще современные TLB поддерживают теги адресных пространств. У меня ощущение, что для человека "со стороны", который не разрабатывает процессоры или операционные системы, во всем Интернете невозможно найти нормальный ответ на вопрос "зачем нужен user-space scheduling" (корутины, файберы, горутины, или что там в вашей среде есть). В худшем случае будет бредятина про то, что стеки ОС-тредов занимают слишком много памяти (ну да, ведь 2^64 байт - это так мало для масштабируемости), а в лучшем - про инвалидацию кешей.
@cdriper
@cdriper 11 ай бұрын
я думаю, что главная здесь проблема это race condition или ты сам управляешь переключением в "безопасные" и понятные моменты времени или это делает операционная система (например, посредине инкремента целого числа, который выполняется в две машинные инструкции)
@olsuhvlad
@olsuhvlad 2 жыл бұрын
20:38 - Rust это все отслеживает :)
@olsuhvlad
@olsuhvlad 2 жыл бұрын
50:10 - тоже отсутствует в Rust'e :)
@cdriper
@cdriper 10 ай бұрын
не самый хороший доклад с точки зрения формулирования мыслей и использования терминологии для тех, кто плохо разбирается в теме, может скорее сбить с толка, чем что-то прояснить корутины (особенно stackful) это нифига не колбэки это потоки выполнения, похожие на threads, а корутинный движок это их шедулер
Как перекладывать байты - Алексей Миловидов
50:47
small vs big hoop #tiktok
00:12
Анастасия Тарасова
Рет қаралды 18 МЛН
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,7 МЛН
버블티로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 64 МЛН
Wait for the last one! 👀
00:28
Josh Horton
Рет қаралды 104 МЛН
Антон Полухин - Незаменимый С++
53:03
C++ User Group
Рет қаралды 39 М.
Kotlin Multiplatform vs Flutter: Which should we use?
4:42
Kei Fujikawa
Рет қаралды 13 М.
024.  Модель памяти C++ - Андрей Янковский
40:03
Yandex for Developers
Рет қаралды 51 М.
Зачем C++ в Такси - Александр Голубев
51:33
Yandex for Developers
Рет қаралды 4,6 М.
YOTAPHONE 2 - СПУСТЯ 10 ЛЕТ
15:13
ЗЕ МАККЕРС
Рет қаралды 63 М.
Gizli Apple Watch Özelliği😱
0:14
Safak Novruz
Рет қаралды 3,7 МЛН
CY Superb Earphone 👌 For Smartphone Handset
0:42
Tech Official
Рет қаралды 822 М.
Will the battery emit smoke if it rotates rapidly?
0:11
Meaningful Cartoons 183
Рет қаралды 31 МЛН
How To Unlock Your iphone With Your Voice
0:34
요루퐁 yorupong
Рет қаралды 27 МЛН