Size: a a a

Kotlin Community

2020 August 01

AI

Arkadii Ivanov in Kotlin Community
Проблема в том что если корутина зпустилась, то отмена на том же executor не предотвращает просыпание корутины
источник

AI

Arkadii Ivanov in Kotlin Community
Но раз вы утверждаете, что это и не гарантируется, то ок. У меня нет вопросов
источник

OY

Oleg Yukhnevich in Kotlin Community
это всё не может быть связано с atomic cancellation в каналах?
https://github.com/Kotlin/kotlinx.coroutines/issues/1813
источник

RI

Ruslan Ibragimov in Kotlin Community
Arkadii Ivanov
Проблема в том что если корутина зпустилась, то отмена на том же executor не предотвращает просыпание корутины
Строго говоря есть разница между executor и dispatcher
источник

RI

Ruslan Ibragimov in Kotlin Community
Если обернуть stop() в launch то видимо будет нужное поведение
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Если обернуть stop() в launch то видимо будет нужное поведение
Если заменить offer на send.
источник

RI

Ruslan Ibragimov in Kotlin Community
Т.е. так как я код показал - нельзя точно сказать в какой последовательности выполнится корутина и stop
источник

AI

Arkadii Ivanov in Kotlin Community
источник

AI

Arkadii Ivanov in Kotlin Community
А так?
источник

AI

Arkadii Ivanov in Kotlin Community
Тоже ошибка
источник

RI

Ruslan Ibragimov in Kotlin Community
Нужно все-таки заглянуть в то как offer работает
источник

AI

Arkadii Ivanov in Kotlin Community
Ruslan Ibragimov
Нужно все-таки заглянуть в то как offer работает
Угу, попробую потом
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Нужно все-таки заглянуть в то как offer работает
Для разных каналов по разному
источник

RI

Ruslan Ibragimov in Kotlin Community
источник

AN

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

RI

Ruslan Ibragimov in Kotlin Community
Из-за offer происходит рандеву и просыпается на той стороне колбек который ждет (flow)
источник

RI

Ruslan Ibragimov in Kotlin Community
А, не, чушь несу
источник

AI

Arkadii Ivanov in Kotlin Community
ИМХО коллбек не может выполниться асинхронно. Он либо выполниться синхронно, и тогда isCancelled будет false и ошибки не будет. Либо выполнится в другом фрейме диспатчера. Второй вариант имхо не должен происходить, потому что уже отменено.
источник

RI

Ruslan Ibragimov in Kotlin Community
Так, а почему вообще collect не должен произойти? Он же вообще не относится никак к launch
источник

AI

Arkadii Ivanov in Kotlin Community
Ruslan Ibragimov
Так, а почему вообще collect не должен произойти? Он же вообще не относится никак к launch
Почему? Он же в скоупе вызывается ведь?
источник