Size: a a a

Kotlin Community

2020 January 03

A

Alexey in Kotlin Community
@ilmirus 👆🏻?
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
наверное 🤷‍♂️
источник

I

Ilmir in Kotlin Community
Alexey
@ilmirus 👆🏻?
Уже не первый раз документация дает ответ на вопрос.
источник

AN

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

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
да, я выше скинул уже пример
Я там временные отметки проставил и прологировал завершение всех вычислений. а не только успешных. Ну, чтоб наверняка видно было.
источник

A

Alexey in Kotlin Community
Ilmir
Уже не первый раз документация дает ответ на вопрос.
Жаль что она не всегда даёт ответ на вопрос как добиться того или иного поведения. :(
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexey
Жаль что она не всегда даёт ответ на вопрос как добиться того или иного поведения. :(
Похоже, проще всего запускать асинки на глобалскоупе.
источник

AM

Andrew Mikhaylov in Kotlin Community
Тогда они ничего не отменят, а исключение можно будет забрать на эвэйте.
источник

I

Ilmir in Kotlin Community
Alexey
Жаль что она не всегда даёт ответ на вопрос как добиться того или иного поведения. :(
Больше скоупов богу скоупов! Исключения для трона исключений!
источник

AM

Andrew Mikhaylov in Kotlin Community
(Да простит меня Роман за такие советы, но я не понимаю, зачем это работает так, как оно работает)
источник

A

Alexey in Kotlin Community
Andrew Mikhaylov
Тогда они ничего не отменят, а исключение можно будет забрать на эвэйте.
Это может привести к нежелательным сайдэффектам
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexey
Это может привести к нежелательным сайдэффектам
К каким? Вы ж хотели забирать результаты / исключения исключительно на эвэйте, нет?
источник

A

Alexey in Kotlin Community
Andrew Mikhaylov
(Да простит меня Роман за такие советы, но я не понимаю, зачем это работает так, как оно работает)
Я подозреваю что иначе не сойдётся вычислительная модель корутин
источник

AM

Andrew Mikhaylov in Kotlin Community
Дело конкретно в том, как работает structured concurrency, глобально корутины тут ни при чём.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ilmir
Ох, вроде разобрался, почему coroutineScope завершается в исключением
Простым смертным, мне кажется, это ни о чём не сказало. По крайней мере мне точно :(
источник

I

Ilmir in Kotlin Community
Andrew Mikhaylov
Тогда они ничего не отменят, а исключение можно будет забрать на эвэйте.
А чем coroutineScope { listOf(...).map { async { ... } } }, который прибьет дочерние асинки при исключении не вариант? Если подумать, то use-case "продолжать асинки, даже если один из них упал с иключением" идет в разрез с structured concurrency. В таком случае GlobalScope - то, что нужно.
источник

I

Ilmir in Kotlin Community
Andrew Mikhaylov
Простым смертным, мне кажется, это ни о чём не сказало. По крайней мере мне точно :(
Исключение сохраняется дваджы. Один раз в coroutineScope'e, второй раз в Deferred.
источник

A

Alexey in Kotlin Community
Ilmir
А чем coroutineScope { listOf(...).map { async { ... } } }, который прибьет дочерние асинки при исключении не вариант? Если подумать, то use-case "продолжать асинки, даже если один из них упал с иключением" идет в разрез с structured concurrency. В таком случае GlobalScope - то, что нужно.
А можно отсылку на то где это идёт в разрез?
источник

AM

Andrew Mikhaylov in Kotlin Community
Ilmir
А чем coroutineScope { listOf(...).map { async { ... } } }, который прибьет дочерние асинки при исключении не вариант? Если подумать, то use-case "продолжать асинки, даже если один из них упал с иключением" идет в разрез с structured concurrency. В таком случае GlobalScope - то, что нужно.
Тем, что в хреново написанном кривыми руками коде, как, например, в моём, может быть трудно взять и собрать в одном месте всё, что надо выполнить параллельно.
источник

AM

Andrew Mikhaylov in Kotlin Community
Собственно, пользуюсь каналами и fan-out-ом, да.
источник