Size: a a a

Kotlin Community

2020 June 10

АО

Алексей Овсянников... in Kotlin Community
Два лаунча, в одном - запускаешь расчеты, в другом - коллектишь в лист. Можно просто коллектить в лист, но лучше операции над списками делать синхронно (через актор тот же, например). Можно вообще StateFlow (он так же называется?) или канал с conflated использовать
источник

LS

Lev Shagalov in Kotlin Community
Я ведь правильно понимаю, что если я запустил две корутины в одном потоке то в один момент времени выполняется только одна. И вместо переключения потоков происходит "переключение" корутин.
источник

LS

Lev Shagalov in Kotlin Community
И переключение корутин происходит только в особенных точках кода - suspend и те места, где "волнистая стрелка". Посреди кода оно просто так не переключится.
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
И переключение корутин происходит только в особенных точках кода - suspend и те места, где "волнистая стрелка". Посреди кода оно просто так не переключится.
Верно.
источник
2020 June 11

LS

Lev Shagalov in Kotlin Community
* Every coroutine builder (like [launch][CoroutineScope.launch], [async][CoroutineScope.async], etc)
* and every scoping function (like [coroutineScope], [withContext], etc) provides _its own_ scope
* with its own [Job] instance into the inner block of code it runs.
* By convention, they all wait for all the coroutines inside their block to complete before completing themselves,
* thus enforcing the discipline of structured concurrency.
источник

LS

Lev Shagalov in Kotlin Community
they all wait for all the coroutines inside their block
источник

LS

Lev Shagalov in Kotlin Community
Как они определяют кого ждать? Через скоуп?
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Как они определяют кого ждать? Через скоуп?
да
источник

AN

Alexander Nozik in Kotlin Community
они порождают скоуп, а скоуп закрывается только когда закончено все, что в нем запущено
источник

LS

Lev Shagalov in Kotlin Community
Я могу запустить корутину в другом скоупе? Специально. Чтобы ее падение не приводило к падению родительского и закрытие родительского не приводило к закрытию дочернего.
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Я могу запустить корутину в другом скоупе? Специально. Чтобы ее падение не приводило к падению родительского и закрытие родительского не приводило к закрытию дочернего.
да, можешь. Для этого прямо явно передаешь переменную скоупа куда надо
источник

AL

Anton Lakotka in Kotlin Community
закрытие родительского всегда будет приводить к закрытию дочернего.
источник

AN

Alexander Nozik in Kotlin Community
Anton Lakotka
закрытие родительского всегда будет приводить к закрытию дочернего.
Он про вызов внешнего скоупа
источник

LS

Lev Shagalov in Kotlin Community
Как это можно в корутине наследовать джоб родительский? Мне казалось что корутина и есть джоб
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Как это можно в корутине наследовать джоб родительский? Мне казалось что корутина и есть джоб
Ну у джоба есть parent
источник

VB

Viacheslav Blinov in Kotlin Community
Lev Shagalov
Как это можно в корутине наследовать джоб родительский? Мне казалось что корутина и есть джоб
не обязательно, есть же например SupervisorJob
источник

LS

Lev Shagalov in Kotlin Community
Одна джоба - одна корутина, так?
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Одна джоба - одна корутина, так?
В принципе да. Но есть поле parent и унутре у нее есть children. Оно с двусторонней связью
источник

LS

Lev Shagalov in Kotlin Community
Ну джобы могут зависеть друг от друга, это понятно. Но сделать одну и ту же джобу на две корутины - бессмысленно, я правильно понимаю?
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Ну джобы могут зависеть друг от друга, это понятно. Но сделать одну и ту же джобу на две корутины - бессмысленно, я правильно понимаю?
Что ты корутиной-то называешь?
источник