Size: a a a

Kotlin Community

2020 August 01

AN

Alexander Nozik in Kotlin Community
Значит там стоит блокировка. Корутины сделаны для того, чтобы блокировки не было
источник

AI

Arkadii Ivanov in Kotlin Community
Alexander Nozik
happens before это про доступ к памяти. А я уже раз пять сказал, что job.cancel() только выставляет флаг, то, что там крутится в лбюом случае доработает до ближайшей suspension point.
Так корутина же как раз suspended, я же об этом толкую
источник

AI

Arkadii Ivanov in Kotlin Community
Ruslan Ibragimov
А если убрать offer? Offer делает рандеву и может разбудить колбек на другой стороне
Так без offer ничего работать не будет. Если например использовать Main.immediate диспатчер, то collect{} вызывается в том же самом кол стеке , и тогда всё ок.
источник

RI

Ruslan Ibragimov in Kotlin Community
Вот тут должно упасть?
источник

AN

Alexander Nozik in Kotlin Community
Arkadii Ivanov
Так корутина же как раз suspended, я же об этом толкую
Корутина гарантирует порядок выполнения только внутри одной конкретной корутины. Если вы пытаетесь без мьютексов сделать синхронизацию двух разных корутин, вы сами себе грабли раскладываете.
источник

AI

Arkadii Ivanov in Kotlin Community
Ruslan Ibragimov
Вот тут должно упасть?
В моём понимании не должно Могу проверить
источник

AI

Arkadii Ivanov in Kotlin Community
Alexander Nozik
Корутина гарантирует порядок выполнения только внутри одной конкретной корутины. Если вы пытаетесь без мьютексов сделать синхронизацию двух разных корутин, вы сами себе грабли раскладываете.
Так там одна корутина, о чём речь?
источник

RI

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

RI

Ruslan Ibragimov in Kotlin Community
Вот тогда тест, у меня падает с java.util.concurrent.ExecutionException: kotlin.UninitializedPropertyAccessException: lateinit property myChannel has not been initialized
источник

AI

Arkadii Ivanov in Kotlin Community
да верно
источник

AI

Arkadii Ivanov in Kotlin Community
потому что start и stop надо разделит
источник

AN

Alexander Nozik in Kotlin Community
Arkadii Ivanov
Так там одна корутина, о чём речь?
Нет, у вас cancel внешний. Он не синхронизирован никак со внутренностями корутины.
источник

AI

Arkadii Ivanov in Kotlin Community
в отдельные submit
источник

RI

Ruslan Ibragimov in Kotlin Community
Arkadii Ivanov
в отдельные submit
https://pastebin.com/Sqw56KNz

Разделил, все равно падает с java.util.concurrent.ExecutionException: kotlin.UninitializedPropertyAccessException: lateinit property myChannel has not been initialized
источник

AI

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

AI

Arkadii Ivanov in Kotlin Community
Печатает error
источник

AI

Arkadii Ivanov in Kotlin Community
Просто корутина должна успеть запуститься
источник

RI

Ruslan Ibragimov in Kotlin Community
Т.е. тут гонка ок?
источник

AI

Arkadii Ivanov in Kotlin Community
Проблема не в lateinit
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Т.е. тут гонка ок?
Две
источник