Так а что мне с этим контекстом то делать? <@U0BRK...
# russian
l
Так а что мне с этим контекстом то делать? @gildor @altavir
a
Пока ничего, пишите все в Default. Потом по ходу можно доразобраться, когда на первые грабли наступите.
Стартуете весь процесс при помощи
GlobalScope.launch{}
(только GlobalScope не надо использовать больше одного раза, об этом у Елизарова есть), а дальше работаете в нем, не думая про контексты.
l
А что за Scope ?
a
Ну тут надо классика читать: https://medium.com/@elizarov/structured-concurrency-722d765aa952
Но если хотите попробовать, то можете на первом этапе игнорировать и работать в одном скоупе. Скоупы важны когда надо ошибки обрабатывать
g
А что с ним делать? в официальном гайде показны простые примеры, как передавать туда диспатчер, вопрос же в конкретном кейсе
l
Скоуп для того, чтобы понять какие еще корутины отменять если я отменил отду из них?
a
в том числе
Там несколько шире возможности, но в основном - да
l
if the scope fails with an exception or is cancelled, all the children are cancelled, too
a
да
l
Если упадет одна из корутин?
Что значит скоуп упал?
a
Значит если в скоупе что-то сломалось, то сам скоуп автоматом ломается и отменяет все что там еще работает
coroutineScope{}
l
Спсб
Теперь я всегда дожен явно указать скоуп при старте корутины?
a
или
superviserScope{}
, но про него отдельно почитать доку
Корутина наследует скоуп от родительской корутины автоматом. Надо указывать только у корня.
Или если он явно меняется
l
По умолчанию будет родительский скоуп? Почему несколько GlobalScope не надо?
g
несколько GlobalScope?
l
"Стартуете весь процесс при помощи
GlobalScope.launch{}
(только GlobalScope не надо использовать больше одного раза, об этом у Елизарова есть)"
a
Ну вот тут лучше почитать Елизарова, но если кратко, то вы в этом случае теряете плюсы structured concurrency.
l
"Structured Concurrency" - ах вот как это называется)))