Size: a a a

Kotlin Community

2020 January 03

AM

Andrew Mikhaylov in Kotlin Community
Но у меня кончилось желание разбираться в любом случае.
источник

AN

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

AN

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

AM

Andrew Mikhaylov in Kotlin Community
А, если внешний супервайзер, вопросов нет.
источник

AN

Alexander Nozik in Kotlin Community
        val asyncs = supervisorScope{
           listOf(1, 2, 3, 4, 5)
               .map {
                   async(Dispatchers.Unconfined) {
                       compute(it)
                   }
               }
       }
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
        val asyncs = supervisorScope{
           listOf(1, 2, 3, 4, 5)
               .map {
                   async(Dispatchers.Unconfined) {
                       compute(it)
                   }
               }
       }
И эта штука саспендится до завершения всех вложенных асинков?
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
И эта штука саспендится до завершения всех вложенных асинков?
Типа того. Хотя она просто дальше не идет по коду.
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
И эта штука саспендится до завершения всех вложенных асинков?
А, стоп, нет конечно
источник

AM

Andrew Mikhaylov in Kotlin Community
Тогда я окончательно перестал понимать, что происходит :)
источник

AN

Alexander Nozik in Kotlin Community
Асинки могут выходить за границы скоупа. Скоуп саспендится только до выполнения всех суспедов внутри него. Вот если вы await внутри него же оставите - это да
источник

AM

Andrew Mikhaylov in Kotlin Community
То есть таки достаточно сложить параллельные асинки в супервайзорскоуп, забрать список Deferred, а когда-нибудь потом пнуть завёрнутые в трай-кэтч эвэйты / эвэйтолл, и всё будет хорошо?
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
То есть таки достаточно сложить параллельные асинки в супервайзорскоуп, забрать список Deferred, а когда-нибудь потом пнуть завёрнутые в трай-кэтч эвэйты / эвэйтолл, и всё будет хорошо?
Вроде да.
источник

AM

Andrew Mikhaylov in Kotlin Community
Жесть. :)
источник

AM

Andrew Mikhaylov in Kotlin Community
По сути это примерно равносильно запуску асинков исключительно на глобалскоупе.
источник

AN

Alexander Nozik in Kotlin Community
нет, наврал похоже
источник

AN

Alexander Nozik in Kotlin Community
таки скоуп висит пока все асинки не завершатся
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну вот это чуть более логично, пожалуй.
источник

AN

Alexander Nozik in Kotlin Community
источник

AN

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

I

Ilmir in Kotlin Community
Ох, вроде разобрался, почему coroutineScope завершается в исключением
источник