Size: a a a

Rust — русскоговорящее сообществo

2020 August 17

Ct

Casual tears in Rust — русскоговорящее сообществo
В Arc<RwLock<>> оборачивать
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
https://docs.rs/indicatif/0.15.0/src/indicatif/progress.rs.html#335-337
Собственно indicatif именно так внутри и устроен
источник

b

in Rust — русскоговорящее сообществo
спс
источник

b

in Rust — русскоговорящее сообществo
так, тогда вопрос, если я открываю файл (File::open), и из потоков хочу писать в него, мне надо обернуть его в Mutex?
источник

SD

Sergey Duck in Rust — русскоговорящее сообществo
так, тогда вопрос, если я открываю файл (File::open), и из потоков хочу писать в него, мне надо обернуть его в Mutex?
либо в RwLock
источник

b

in Rust — русскоговорящее сообществo
печаль,
|  ______________^^^^^^^_-
  | |              |
  | |              `std::sync::MutexGuard<'_, std::fs::File>` cannot be sent between threads safely
источник

S

Sese in Rust — русскоговорящее сообществo
заверни в Arc, написали же выше
источник

S

Snarpix in Rust — русскоговорящее сообществo
печаль,
|  ______________^^^^^^^_-
  | |              |
  | |              `std::sync::MutexGuard<'_, std::fs::File>` cannot be sent between threads safely
Похоже между тредами передается не сам мьютекс, а результат lock()
источник

Э

Эрик in Rust — русскоговорящее сообществo
так, тогда вопрос, если я открываю файл (File::open), и из потоков хочу писать в него, мне надо обернуть его в Mutex?
Нет. В растовые файлы можно писать по расшаренной ссылке, оборачивать в мутекс не надо, надо только в Arc.
источник

t

this is not mrklf in Rust — русскоговорящее сообществo
печаль,
|  ______________^^^^^^^_-
  | |              |
  | |              `std::sync::MutexGuard<'_, std::fs::File>` cannot be sent between threads safely
не гуард же, а сам мьютекс
источник

b

in Rust — русскоговорящее сообществo
я брал let f = fs_mutex.lock(); и после тред создавал
источник

t

this is not mrklf in Rust — русскоговорящее сообществo
я брал let f = fs_mutex.lock(); и после тред создавал
оберни fs_mutex в Arc и между тредами передавай
источник

b

in Rust — русскоговорящее сообществo
хорошо, решил просто создав ф-ию дополнительную которая пишет в файл и вызываю из тредов
источник

b

in Rust — русскоговорящее сообществo
this is not mrklf
не гуард же, а сам мьютекс
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1da05a1a296c30122330d83787de5a35

я не правильно делаю? просто хочу разобраться как обернуть в Arc
источник

t

this is not mrklf in Rust — русскоговорящее сообществo
.lock().unwrap() и используй
источник

b

in Rust — русскоговорящее сообществo
Arc не предоставляет lock
источник

t

this is not mrklf in Rust — русскоговорящее сообществo
Arc не предоставляет lock
на мьютексе будешь вызывать, у Arc-a дереф же есть
источник

t

this is not mrklf in Rust — русскоговорящее сообществo
А стоп. У тебя же мьютекса нет. Arc::new(Mutex::new(fs))
источник

b

in Rust — русскоговорящее сообществo
понял, добавил, да, работает, спасибо
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
так, тогда вопрос, если я открываю файл (File::open), и из потоков хочу писать в него, мне надо обернуть его в Mutex?
Мьютекс не нужен, &File имплементит Read.
источник