Size: a a a

2020 December 06

AI

Alex Ilizarov in Rust Async
У тебя в спавне точно также футура застрянет, только очередности не будет
источник

E

Eugene in Rust Async
Alex Ilizarov
У тебя в спавне точно также футура застрянет, только очередности не будет
нет, в spawn не застревали, но выполнялись непоследовательно
источник

AI

Alex Ilizarov in Rust Async
Eugene
нет, в spawn не застревали, но выполнялись непоследовательно
Я не вижу разницы, либо и там и там застревают, либо не застревабт и там и там
источник

AI

Alex Ilizarov in Rust Async
В общем дебаж дальше
источник

AI

Alex Ilizarov in Rust Async
Нужна очередность - не спавни
источник

E

Eugene in Rust Async
Alex Ilizarov
В общем дебаж дальше
понял, спасибо!
источник

KR

Kai Ren in Rust Async
Alex Ilizarov
Нужна очередность - не спавни
Да какая разница? Очерёдность зависит от того как мы ожидаем результат, а не выполняем футуру. Если в цикле последовательно делать spawn(fut).await то тоже всё будет отрабатывать последовательно.

Юзать spawn или нет - вопрос того хотим ли мы чтобы эти футурки выполнялись в каком угодно потоке, либо же в текущем контексте. Что, в принципе, с workstealing рантаймом не имеет много смысла.
источник

A

Anton in Rust Async
не верно
источник

A

Anton in Rust Async
в случае спавна очередность не гарантируется
источник

MB

Mikail Bagishov in Rust Async
Если делать .await на JoinHandle, то очередность таки будет
источник

p

polunin.ai in Rust Async
Anton
в случае спавна очередность не гарантируется
В случае эвейта гарантирована
источник

MB

Mikail Bagishov in Rust Async
Другой вопрос, что это просто бесполезное использование spawn()-а
источник

A

Anton in Rust Async
Mikail Bagishov
Другой вопрос, что это просто бесполезное использование spawn()-а
А, он await'ит
источник

MB

Mikail Bagishov in Rust Async
Я только один случай вижу, когда это полезко, и он очень специфичный - а именно, чтобы футура исполнялась на tokio-managed треде и могла делать block_in_place
источник

KR

Kai Ren in Rust Async
Ну, есть ещё мнение, что мы таким образом одну большущую жирную футуру можем почикать на больше маленьких, и мол рантайму проще процессить много маленьких, нежели жирные. Но где в подобные моменты можно упереться и где это может быть критично - я не знаю, может быть какой-то ХФТ. Да и это уже профилировщиком надо глядеть, в любом случае.
источник

A

Anton in Rust Async
если ты awaitишь смысла нет, тебе точно нужно последовательно а не общий результат?
источник

AK

Aleksandr Kravtsov in Rust Async
подскажите как сделать хэшмапу мутексов и конкурентно из неё получать мутекс по ключу, после чего дропать мутекс самой карты? сейчас вот так не получается, говорит cannot move out of map_guard because it is borrowed
источник

AK

Aleksandr Kravtsov in Rust Async
или саму карту нужно не в мутекс класть а в другое что то?
источник

a

antuan in Rust Async
Aleksandr Kravtsov
или саму карту нужно не в мутекс класть а в другое что то?
От чего хочешь защититься, вешая мьютекс на мапу? Мб rwlock хочется в действительности? С ним такой проблемы быть не должно по идее.
источник

MB

Mikail Bagishov in Rust Async
Aleksandr Kravtsov
подскажите как сделать хэшмапу мутексов и конкурентно из неё получать мутекс по ключу, после чего дропать мутекс самой карты? сейчас вот так не получается, говорит cannot move out of map_guard because it is borrowed
Ну проблема такая:
с того момента как ты дропнул map_guard, кто-то может например удалить mtx из мапы. Тогда тебе уже нечего локать.
источник