что-то типа барьера? Т.е. мне нужен такой своеобразный переиспользуемый CompletableDeferred:
suspend fun startJobs() = coroutineScope {
val barrier = CompletableDeferred(Unit)
(1..10).forEach {
launch {
while (true) {
barrier.await() // ждём отмашки
// do stuff
}
}
}
// start all jobs
barrier.complete(Unit)
}
Только мне нужно иметь возможность опять перевести barrier в незавершённое состояние и таким образом поставить все запущенные корутины опять на паузу. Mutex, Semaphore и прочее как-то непонятно как сюда можно прикрутить. Можно попробовать сделать SharedMutableFlow и чистить ему replayCache... но это как-то криво. Есть готовый инструмент для такого?
ченел?)
и как?
Обсуждают сегодня