Size: a a a

2021 February 24

MB

Mikail Bagishov in Rust Async
mAX
файлы, правда не читал.. только сеть и таймеры
вот-вот, а сеть и таймеры спавнов под капотом не делают.
источник

m

mAX in Rust Async
попробую сейчас тогда tokio::spawn вернуть вместо join!(), но не буду юзать tokio::fs
источник

m

mAX in Rust Async
файл читаю небольшой.. там 3-4мб данных..
источник

m

mAX in Rust Async
tokio::fs::read хоть и виснет, но видимо тут не виноват.. даже без него в tokio::spawn нифига не работает
а вот с join!() все отлично..

либа в релизе собирается, может оптимизатор как-то выпиливает код
там вызовы андройдовского NDK внутри идут, может он на них забил и по цепочке все выкидывает
источник

MB

Mikail Bagishov in Rust Async
То есть ты обернул что-то в спавн и все сломалось?
источник

m

mAX in Rust Async
да

// вот так уже не работает
// tokio::spawn(async move {
//     tokio::join!(decoder_start_future, decoder_input_future, decoder_output_future);
// });


// а вот так норм
tokio::join!(decoder_start_future, decoder_input_future, decoder_output_future);
источник

MB

Mikail Bagishov in Rust Async
Это согласуется с моим предположением - от spawn и spawn_blocking что-то в токио на андроиде ломается.
источник

m

mAX in Rust Async
https://github.com/tokio-rs/tokio/issues/559
вот тут вроде бы пишут что mio поддерживает, а оно же под капотом
источник

m

mAX in Rust Async
ну и в другом коде у меня много где spawn применяется и все ок
источник

MB

Mikail Bagishov in Rust Async
mio отвечает как раз за асинхронный ввод-вывод (то есть за сокеты), и к ним у тебя претензий нет.
источник

m

mAX in Rust Async
блин.. кажется нашел причину
либа завязана на tokio 0.2 и рантайм в ней создается
а дальше дергается код пакета в зависимостях которого tokio 1.2
но как оно компилилось вообще..
источник

IB

Ivan Boldyrev in Rust Async
mAX
блин.. кажется нашел причину
либа завязана на tokio 0.2 и рантайм в ней создается
а дальше дергается код пакета в зависимостях которого tokio 1.2
но как оно компилилось вообще..
С компиляцией проблем как раз нет.
источник

m

mAX in Rust Async
ну да.. пересобрал, все tokio::spawn запускаются, tokio::fs::read читает
ппц.. столько времени потерять из-за такой фигни!

код все равно где-то на полпути глючит, но думаю это уже другие косяки))
источник
2021 March 01

AP

Alexander Prokudin in Rust Async
Подскажите, будьте добры:

Использую actix_web, нужно чтобы в бэкграунде работали параллельно таски

Пока пробовал спавнить их tokio::spawn перед вызовом HttpServer::new(...), по срабатыванию эндпойнта в mpsc им закидывается джоба и они её выполняют

Проблема: сейчас при закидывании нескольких джобов выполняется параллельно только один, остальные видимо в этом же треде и не поллятся

Как можно добиться нужного поведения?
источник

KR

Kai Ren in Rust Async
Alexander Prokudin
Подскажите, будьте добры:

Использую actix_web, нужно чтобы в бэкграунде работали параллельно таски

Пока пробовал спавнить их tokio::spawn перед вызовом HttpServer::new(...), по срабатыванию эндпойнта в mpsc им закидывается джоба и они её выполняют

Проблема: сейчас при закидывании нескольких джобов выполняется параллельно только один, остальные видимо в этом же треде и не поллятся

Как можно добиться нужного поведения?
Наспавни несколько job runner'ов, раздай им mpMc канал.
источник

KR

Kai Ren in Rust Async
У тебя сейчас by design с очереди джобов кто-то один констьюимт и выполняет таски.
источник

AP

Alexander Prokudin in Rust Async
Kai Ren
Наспавни несколько job runner'ов, раздай им mpMc канал.
Так и есть сейчас, четыре раза tokio::spawn() делаю, чтобы заспавнить четыре раннера, у каждого Arc<Mutex<Receiver<Job»>
источник

KR

Kai Ren in Rust Async
> Arc<Mutex<Receiver<Job»>
источник

KR

Kai Ren in Rust Async
Уф)
источник

AP

Alexander Prokudin in Rust Async
Kai Ren
> Arc<Mutex<Receiver<Job»>
А, ну потому что ты посоветовал mpMc, а я через mpsc в арк-мьютексе сделал, но по идее разницы же особо не должно быть
источник