Size: a a a

2021 August 09

IT

Ilya Titkov in Rust Async
так он и не должен их дергать же, он же отдает pending и ждет пока какая-то футура разбудит его
источник

DF

Dollar Føølish in Rust Async
это не связано жеж
источник

DF

Dollar Føølish in Rust Async
хотя..
источник

MS

Mikola Summer Duck in Rust Async
Я начинаю путаться. Футуры не будят никого, они будятся, разве нет?
источник

IT

Ilya Titkov in Rust Async
конкретно футуры не будят, но самые низкоуровневые регают событие в реакторе, а он уже дергает вейкер.
источник

MS

Mikola Summer Duck in Rust Async
Всё, я понял.
источник

IT

Ilya Titkov in Rust Async
В случае с select_all там же нет никакого loop {}
оно просто отдает pending и точно так же засыпает
источник

MS

Mikola Summer Duck in Rust Async
Получается оно уже и так не бизи-вейтит, никаких дополнительных механизмов не нужно.
источник

IT

Ilya Titkov in Rust Async
ага
источник

MS

Mikola Summer Duck in Rust Async
Первые поллы JoinHandle'ов регистрируют наш интерес, затем высокоуровневая таска яйлдит и реактор может её не будить пока смерть одной из подтасок её не разбудит.
источник

D

Denis in Rust Async
что-то типа того, да
источник

MB

Mikail Bagishov in Rust Async
Там нет бизивейтов, но есть n^2 в асимптотике
источник

MB

Mikail Bagishov in Rust Async
Если тасок много, то вместо select_all используй FuturesUnordered
источник

MS

Mikola Summer Duck in Rust Async
Не, мне не подходит, смотри юзкейз.
источник

MS

Mikola Summer Duck in Rust Async
Количество тасок статически извесное.
источник

MB

Mikail Bagishov in Rust Async
Ну, мне непонятно, чем тебе FuturesUnordered не подходит. Можно положить в него все  JoinHandle, один раз вызвать next, а потом с помощью iter_mut обойти все оставшиеся.
источник

IT

Ilya Titkov in Rust Async
а почему в select_all n^2? Там же один раз надо пробежать по списку, чтобы первую выполненную отдать и все.
источник

MS

Mikola Summer Duck in Rust Async
Оууу, FuturesUnordered не только Stream реализуют! 🤔
источник

IT

Ilya Titkov in Rust Async
точнее два раза, один раз заполить, а второй раз найти готовую.
источник

MB

Mikail Bagishov in Rust Async
Да, согласен. В этом конкретном случае будет n.
источник