Size: a a a

2019 October 26

D

Denys in Kotlin Start
А все корутины запускаются в Main диспатчере?
источник

D

Denys in Kotlin Start
получить шутку
про многопоточность.
А то есть риск
источник

E🎸

El Mariachi 🎸 in Kotlin Start
да, в Default запускается уже внутри try блока отдельная функция
источник

E🎸

El Mariachi 🎸 in Kotlin Start
она несколько секунд работает, поэтому пока yield не сделал - она не канцелялась просто так... но join плевал на это и запускал новую задачу не дожидаясь...
источник

D

Denys in Kotlin Start
Можете воспроизвести проблемму на маленьком примере?
источник

E🎸

El Mariachi 🎸 in Kotlin Start
мм... ща попробую в песочнице
источник

D

Denys in Kotlin Start
'join() дожидается завершения Job'a. И дальше исполнение кода не пойдет, пока `someJob не будет в терминальном состоянии.
источник

E🎸

El Mariachi 🎸 in Kotlin Start
Denys
'join() дожидается завершения Job'a. И дальше исполнение кода не пойдет, пока `someJob не будет в терминальном состоянии.
ну вот я и ожидал такого... но по факту, выполнение шло дальше (после join был Log), а finally предыдущей задачи отрабатывал только через несколько секунд
источник

E🎸

El Mariachi 🎸 in Kotlin Start
сейчас еще раз перепроверю
источник

E🎸

El Mariachi 🎸 in Kotlin Start
scanJob = lifecycleScope.launch {
   withContext(Dispatchers.Main) {
      Log.d("Job", "Start new job:$resId")
      scanJob?.cancelAndJoin()
      Log.d("Job", "Joined:$resId")
      try {
          ...
          withContext(Dispatchers.Default) {... }
          Log.d("Job", "Complete:$resId")
      } finally {
          Log.d("Job", "Finally:$resId")
      }
   }
}
источник

E🎸

El Mariachi 🎸 in Kotlin Start
10-26 22:09:58.650 D/Job: Start new job:CLAY
10-26 22:09:58.650 D/Job: Joined:CLAY
10-26 22:10:00.140 D/Job: Start new job:LITHIUM_ORE
10-26 22:10:01.320 D/Job: Start new job:LIMESTONE
10-26 22:10:01.330 D/Job: Joined:LIMESTONE
10-26 22:10:09.310 D/Job: Finally:CLAY
10-26 22:10:11.250 D/Job: Complete:LIMESTONE
10-26 22:10:11.250 D/Job: Finally:LIMESTONE
источник

E🎸

El Mariachi 🎸 in Kotlin Start
Joined LIMESTONE на 8сек раньше, чем Finally CLAY
источник

E🎸

El Mariachi 🎸 in Kotlin Start
может потомучто оно в другом диспатчере в этот момент?
источник

E🎸

El Mariachi 🎸 in Kotlin Start
и почему LITHIUM_ORE не проскочило тогда, а вообще хз где потерялось
источник

D

Denys in Kotlin Start
El Mariachi 🎸
может потомучто оно в другом диспатчере в этот момент?
Ну вот я и спрашивал исполняется ли все в одном потоке. Ибо стандартный вывод не синхронизирован и доверять такому порядку не стоит.
источник

E🎸

El Mariachi 🎸 in Kotlin Start
все Log.d в withContext(Dispatchers.Main)
источник

E🎸

El Mariachi 🎸 in Kotlin Start
хотя... вызов функции в которой этот launch через callback происходит... возможно в этом косяк
источник

D

Denys in Kotlin Start
> scanJob = lifecycleScope.launch {
>    scanJob?.cancelAndJoin()

Меня еще это смущает
источник

E🎸

El Mariachi 🎸 in Kotlin Start
ну, я вот про это и спрашивал
источник

E🎸

El Mariachi 🎸 in Kotlin Start
можно ли так
источник