Как приостановить выброс потока, когда коллектор приостановлен?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как приостановить выброс потока, когда коллектор приостановлен?

Сообщение Anonymous »

Если я вызываю функцию приостановки, сопрограмма должна быть приостановлена. Но как я могу использовать это, чтобы приостановить отправку SharedFlow?
fun main()= runBlocking {
println("before, time is ${System.currentTimeMillis()/1000} s")
delay5s()
println("after, time is ${System.currentTimeMillis()/1000} s")

}
private suspend fun delay5s() {
delay(5000)
}

код будет работать корректно. Но когда я пробую это в SharedFlow.
fun main()= runBlocking {
val flow = MutableSharedFlow(
replay = 0,
extraBufferCapacity = 0,
onBufferOverflow = BufferOverflow.SUSPEND
)
launch {
flow.collect {
println("before on collect, time is ${System.currentTimeMillis()/1000} s")
delay5s()
println("after on collect, time is ${System.currentTimeMillis()/1000} s")
}
}
launch {
println("before emit, time is ${System.currentTimeMillis()/1000} s")
flow.emit(1)
println("after emit, time is ${System.currentTimeMillis()/1000} s")
}

}

Я понял
before emit, time is 1733335171 s
before on collect, time is 1733335171 s
after emit, time is 1733335171 s
after on collect, time is 1733335176 s

Как видите, заблокирован только коллектор. Вызовы «до и после эмиссии» происходят почти одновременно.
Я ожидаю
before emit, time is 1733335171 s
before on collect, time is 1733335171 s
after on collect, time is 1733335176 s
after emit, time is 1733335176 s


Подробнее здесь: https://stackoverflow.com/questions/792 ... is-suspend
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как приостановить выброс потока, когда коллектор приостановлен?
    Anonymous » » в форуме Android
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как приостановить поток, пока коллектор не достроен?
    Anonymous » » в форуме Android
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Коллектор OpenElemetry не экспортирует данные в Jaegerui
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как приостановить поток, используя идентификатор потока?
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как одновременно приостановить поток и разблокировать Mutex из этого потока
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»