чтобы они выполнились параллельно и к ним была применена операция ИЛИ?
Можно завернуть их в async и делать await для каждой, но есть минус: await будет применен по очереди к каждой функции. То есть если последняя функция выполнится быстрее остальных и вернет true, то остальные ждать бессмысленно, но реализация с await будет ждать.
используйте List<Deferred<Boolean>>.awaitAll().any()
Awaits for completion of given deferred values without blocking a thread and resumes normally with the list of values when all deferred computations are complete or resumes with the first thrown exception if any of computations complete exceptionally including cancellation. awaitAll() ждет пока все await выполнятся. Совсем не то.
Используй мьютексы
чтобы по очереди выполнять их ?
Конец текста
Из коробки насколько я знаю ничего нет, но вот такое вроде работает https://pl.kotl.in/qctwz7dlH
спасибо за coroutineContext.cancelChildren() у меня такая реализация получилась https://pl.kotl.in/KkyV2-q1D
Тут отмена может не сработать, если вернувшая true функция выполнится раньше, чем закончится цикл
да есть такое, спасибо
Обсуждают сегодня