Size: a a a

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

2020 September 09

M

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

K

Kitsu in Rust — русскоговорящее сообществo
impl <T: Send> Sync for MutexGuard выглядит подозрительно, как это работает?
пробовал прогонять с мири или даже лучше с лумом?
источник

M

Mnwa in Rust — русскоговорящее сообществo
Kitsu
impl <T: Send> Sync for MutexGuard выглядит подозрительно, как это работает?
пробовал прогонять с мири или даже лучше с лумом?
Не пробоавл, но такая же тема сделана у стороних мьютексов от futures и tokio
источник

IB

Ivan Boldyrev in Rust — русскоговорящее сообществo
Kitsu
impl <T: Send> Sync for MutexGuard выглядит подозрительно, как это работает?
пробовал прогонять с мири или даже лучше с лумом?
Я <на первый взгляд> не вижу никакой привязки к системным тредам и системным локам.  Так что проблемы нет.
источник

K

Kitsu in Rust — русскоговорящее сообществo
но может быть T: !Sync
источник

M

Mnwa in Rust — русскоговорящее сообществo
Kitsu
но может быть T: !Sync
Тогда и guard будет
!Send
источник

IB

Ivan Boldyrev in Rust — русскоговорящее сообществo
Kitsu
но может быть T: !Sync
Для rwlock это проблема, а для Mutex — нет.
источник

IB

Ivan Boldyrev in Rust — русскоговорящее сообществo
Mnwa
Тогда и guard будет
!Send
Не вижу у тебя такого ограничения.
источник

M

Mnwa in Rust — русскоговорящее сообществo
А, не верно прочитал, соре
Да
!Send + !Sync guard будет тоже
!Send + !Sync
источник

M

Mnwa in Rust — русскоговорящее сообществo
А вот для Send + !Sync
Guard будет уже Send + Sync
В чем тут может быть проблема?
источник

V

Vladimir in Rust — русскоговорящее сообществo
Kitsu
impl <T: Send> Sync for MutexGuard выглядит подозрительно, как это работает?
пробовал прогонять с мири или даже лучше с лумом?
Что такое лум
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Vladimir
Что такое лум
источник

V

Vladimir in Rust — русскоговорящее сообществo
Mnwa
А вот для Send + !Sync
Guard будет уже Send + Sync
В чем тут может быть проблема?
Sync значит что ссылку на объект можно передавать между тредами.
Взять например реффцелл, попробуй поместить его в свой мутекс, и в каком-то скорее тредлупе передать в два потока ссылку на мутекс гвард/рвлок.

Поскольку ты форсишь синк, то это должно сработать. Но если у тебя есть Deref, то это вроде как баг, так как одновременно можно будет сделать . borrow_mut из двух потоков, а рефцелл не атомарный.
источник

V

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

АИ

Ахмет Иванов... in Rust — русскоговорящее сообществo
Привет, вопрос по rocket.rs. Нужно сделать что то типа каталога с товарами и фильтры к ним. Думаю сделать через ajax запрос, но встает вопрос, как на него ответить, если мне нужно отправить одновременно текст в виде описаний товаров и прочего и их фоток.
источник

M

Mnwa in Rust — русскоговорящее сообществo
Vladimir
Sync значит что ссылку на объект можно передавать между тредами.
Взять например реффцелл, попробуй поместить его в свой мутекс, и в каком-то скорее тредлупе передать в два потока ссылку на мутекс гвард/рвлок.

Поскольку ты форсишь синк, то это должно сработать. Но если у тебя есть Deref, то это вроде как баг, так как одновременно можно будет сделать . borrow_mut из двух потоков, а рефцелл не атомарный.
Окей, спасибо, напишу на это тестик
источник

M

Mnwa in Rust — русскоговорящее сообществo
Vladimir
Sync значит что ссылку на объект можно передавать между тредами.
Взять например реффцелл, попробуй поместить его в свой мутекс, и в каком-то скорее тредлупе передать в два потока ссылку на мутекс гвард/рвлок.

Поскольку ты форсишь синк, то это должно сработать. Но если у тебя есть Deref, то это вроде как баг, так как одновременно можно будет сделать . borrow_mut из двух потоков, а рефцелл не атомарный.
Да, это правда, оставил только форсирование синка при Send + Sync + ?Sized у RwLockGuards
источник

M

Mnwa in Rust — русскоговорящее сообществo
И у остальных тоже поменял
источник

Ct

Casual tears in Rust — русскоговорящее сообществo
Mnwa
Всем привет! Я тут для личных нужд написал довольно шустрый асинхронный мьютекс + рвлок (потому что у токио прям совсем все медленно)
Решил запостить сюда, вдруг кому пригодится
https://github.com/Mnwa/fast-async-mutex
https://github.com/Mnwa/fast-async-mutex/blob/master/src/mutex.rs#L130
Если условие false то кто фьючу разбудит? Если не false, то как лайфтайм waker'а контролируется? Это точно валидно?
источник

c

call eax in Rust — русскоговорящее сообществo
Mnwa
Всем привет! Я тут для личных нужд написал довольно шустрый асинхронный мьютекс + рвлок (потому что у токио прям совсем все медленно)
Решил запостить сюда, вдруг кому пригодится
https://github.com/Mnwa/fast-async-mutex
Уверен, что он корректно работает, особенно на архитектурах с weak ordering?
источник