Size: a a a

2021 October 09

IL

Ilya Lakhin in Rust Async
Другими потоками или другими тасками, условно говоря.
источник

IL

Ilya Lakhin in Rust Async
(в рамках того же процесса, конечно)
источник

IL

Ilya Lakhin in Rust Async
Вообще, наверное моя проблема по большому счету не решаемая
источник

C

Cat in Rust Async
понять бы ещё, в чём проблема
источник

C

Cat in Rust Async
звучит как будто нужно просто бродкастить стд инпут из одного потока другим
источник

IL

Ilya Lakhin in Rust Async
Проблема в том, что все чтения из stdin блокирующие. Начав один раз читать из stdin, я не могу отказаться от этого запроса. А у меня могут быть ситуации, когда мне нужно отказаться. Проблема не в том, чтобы независимые "читатели" отказались от чтения, а именно в том, чтобы прекратить читать из самого stdin.
источник

IL

Ilya Lakhin in Rust Async
Короче говоря, это видимо вопрос не по асинхронному программированию на Rust, а вопрос по тому, почему в std stdin сделали блокирующим. Так что прошу прощения, вопрос снимается :)
источник

П

Пух in Rust Async
Ну потому что это файл
источник

K

Kitsu in Rust Async
tokio::io::stdin?
источник

K

Kitsu in Rust Async
Правда он все равно с высокой доли вероятности под капотом блокирующий
источник

K

Kitsu in Rust Async
Ну да, все так, из доки:

> For technical reasons, stdin is implemented by using an ordinary blocking read on a separate thread, and it is impossible to cancel that read.
источник

KR

Kai Ren in Rust Async
Ну он будет вынесен в другой тред энивей, и event loop не блоканёт, соответсвенно, заливаем сверху select’ом и радуемся.
источник

IL

Ilya Lakhin in Rust Async
Да проблема не в том. Вынести в отдельный тред я могу и с Токио, и без Токио.
источник

IL

Ilya Lakhin in Rust Async
Проблема в том, что я как бы stdin в это отдельном треде заблокирую
источник

IL

Ilya Lakhin in Rust Async
Им больше, кроме этого треда, никто пользоваться больше не сможет, кто с тредом как-либо не связан
источник

C

Cat in Rust Async
убиваешь поток просто и всё
источник

KR

Kai Ren in Rust Async
Так если ты дропнешь токио-таску с хэндлом на другой поток, оно его не отменит разве?
источник

IL

Ilya Lakhin in Rust Async
А разве поток можно убить?
источник

IL

Ilya Lakhin in Rust Async
Поток, насколько я знаю, отменить нельзя
источник

IL

Ilya Lakhin in Rust Async
(в общем случае)
источник