Спасибо огромное. Хотелось бы услышать харкорный доклад с техническими данными как реализованы корутины. Вот только часть вопросов, которые я хотел бы задать (прояснить). 1. Что означает фраза "корутина засыпает"? 2. Как система узнает, что результат получен и нужно разбудить корутину и дальше выполнить код, который в ней написан. Как все это увязано с ОС. 3. Есть ли концептуальные сходства между тем как работают корутины и прерывания? 4. Правильно ли я понимаю, что корутины дешевле потоков, так как внутри механизма лежит state машина, которая занимается менеджментом корутин. То есть иерархия примерно такая. Процесс -> поток -> корутина? 5. Как корутины лежат в Heap и почему их не зачищает GC?
Можете подсказать, почему на 29:53 утечет память? Фьючер выполнится в своем потоке, главный тред упадет на первом await, а затем сборщик мусора соберет ненужные данные 2-го фьючера, т.к. ссылок на него больше нет. Разве не так?
Если я правильно понял мысль, то утечёт как бы действие) Ну т.е. падение первого вызова сервиса не означает прекращение работы над вторым. А он там мб много чего меняет, делает ещё какие-то запросы
В реальной жизни всё не совсем так, как Роман рассказывает. Все потоки не заблокируются на медленном сервисе, как правило для этого реализуют circuit breaker и выводят тормозящий сервис из ротации. Блокирующий код всё ещё сильно проще писать, понимать и отлаживать. А проблемы в лекции достаточно успешно решаются.
Спасибо огромное. Хотелось бы услышать харкорный доклад с техническими данными как реализованы корутины.
Вот только часть вопросов, которые я хотел бы задать (прояснить).
1. Что означает фраза "корутина засыпает"?
2. Как система узнает, что результат получен и нужно разбудить корутину и дальше выполнить код, который в ней написан. Как все это увязано с ОС.
3. Есть ли концептуальные сходства между тем как работают корутины и прерывания?
4. Правильно ли я понимаю, что корутины дешевле потоков, так как внутри механизма лежит state машина, которая занимается менеджментом корутин. То есть иерархия примерно такая. Процесс -> поток -> корутина?
5. Как корутины лежат в Heap и почему их не зачищает GC?
Спасибо, очень полезно и почти всё понятно.
Спасибо за отличный инструмент!
спасибо за науку!!
Довольно понятно, но хотелось бы больше
Making with suspend pays off at scale - Создание с помощью приостановки окупается в больших масштабах
Можете подсказать, почему на 29:53 утечет память? Фьючер выполнится в своем потоке, главный тред упадет на первом await, а затем сборщик мусора соберет ненужные данные 2-го фьючера, т.к. ссылок на него больше нет. Разве не так?
Если я правильно понял мысль, то утечёт как бы действие)
Ну т.е. падение первого вызова сервиса не означает прекращение работы над вторым. А он там мб много чего меняет, делает ещё какие-то запросы
@@alexandr.b понял, спасибо!
Илон маск
RIP Roman 🕊️
Wdym
В реальной жизни всё не совсем так, как Роман рассказывает. Все потоки не заблокируются на медленном сервисе, как правило для этого реализуют circuit breaker и выводят тормозящий сервис из ротации.
Блокирующий код всё ещё сильно проще писать, понимать и отлаживать. А проблемы в лекции достаточно успешно решаются.
че за хрень ты несешь
после suspend нихрена не понял. лучше потоками буду играть
очень интересно, но слушать чавканье и эканье неприятно.
fibers [ˈfaɪbəz] ворсинки, волокна, волокнистые материалы
fiber [faɪbə] волокно, нить, клетчатка; белок; световод; волоконный.
fibre [ˈfaɪbə] волокно, нить, клетчатка
unwind [ʌnˈwaɪnd] размотать