169 похожих чатов

Пусть есть N suspend функций, которые возвращают Boolean. Как сделать так,

чтобы они выполнились параллельно и к ним была применена операция ИЛИ?
Можно завернуть их в async и делать await для каждой, но есть минус: await будет применен по очереди к каждой функции. То есть если последняя функция выполнится быстрее остальных и вернет true, то остальные ждать бессмысленно, но реализация с await будет ждать.

11 ответов

12 просмотров

используйте List<Deferred<Boolean>>.awaitAll().any()

EvGem- Автор вопроса
Aλex Sokol
используйте 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 выполнятся. Совсем не то.

Используй мьютексы

vorobyoff
Используй мьютексы

чтобы по очереди выполнять их ?

.

Dawin York
.

Конец текста

Из коробки насколько я знаю ничего нет, но вот такое вроде работает https://pl.kotl.in/qctwz7dlH

EvGem- Автор вопроса
Vladimir Petraković
Из коробки насколько я знаю ничего нет, но вот так...

спасибо за coroutineContext.cancelChildren() у меня такая реализация получилась https://pl.kotl.in/KkyV2-q1D

EvGem
спасибо за coroutineContext.cancelChildren() у мен...

Тут отмена может не сработать, если вернувшая true функция выполнится раньше, чем закончится цикл

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта