Size: a a a

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

2020 November 29

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Плюс UnsafeCell
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
red75prime
Делать мутекс в user-space тоже странновато
Встроенный растовый мьютекс тоже не то, чтобы в ядре?..
источник

𝕯𝖁

𝕯mitry 𝖁akulenko... in Rust — русскоговорящее сообществo
red75prime
Делать мутекс в user-space тоже странновато
Это же просто для понимания, не собираюсь я его использовать.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Встроенный растовый мьютекс тоже не то, чтобы в ядре?..
Он всего лишь pthread_mutex_t
источник

𝕯𝖁

𝕯mitry 𝖁akulenko... in Rust — русскоговорящее сообществo
Mikail Bagishov
В таком случае ты можешь спокойно пользоваться стандартными растовыми потоками, но просто использовать с ними свои собственные примитивы
Да, но std::thread::spawn уже накладывает ограничения на используемые типы. Плюс атомики - это уже поддержка многопоточности. А есть алгоритмы, которые их не используют и обходятся обычными типами.
источник

r

red75prime in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Встроенный растовый мьютекс тоже не то, чтобы в ядре?..
Это обёртка над системным мутексом. А, понял. "сделать мутекс" в смысле написать обёртку над системным.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
𝕯mitry 𝖁akulenko
Да, но std::thread::spawn уже накладывает ограничения на используемые типы. Плюс атомики - это уже поддержка многопоточности. А есть алгоритмы, которые их не используют и обходятся обычными типами.
unsafe impl Send, unsafe impl Sync
источник

𝕯𝖁

𝕯mitry 𝖁akulenko... in Rust — русскоговорящее сообществo
Emmanuel Goldstein
unsafe impl Send, unsafe impl Sync
Я с unsafe мало сталкивался. Спасибо, посмотрю
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
𝕯mitry 𝖁akulenko
Да, но std::thread::spawn уже накладывает ограничения на используемые типы. Плюс атомики - это уже поддержка многопоточности. А есть алгоритмы, которые их не используют и обходятся обычными типами.
> std::thread::spawn уже накладывает ограничения на используемые типы.

Да, но они совершенно разумные. В частности, для своего мьютекса тебе достаточно докинуть имплов Send  и Sync по ситуации
>  Плюс атомики - это уже поддержка многопоточности

не понимаю это утверждение. Растовые атомики это очень тонкая прослойка над настоящими атомиками.
Хочешь еще глубже - есть inline assembly
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
red75prime
Это обёртка над системным мутексом. А, понял. "сделать мутекс" в смысле написать обёртку над системным.
pthread_mutex_t это не «системный» мьютекс, это пара спинлоков
источник

EG

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

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну и написание примитивов синхронизации без атомиков крайне непрактично
источник

𝕯𝖁

𝕯mitry 𝖁akulenko... in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну и написание примитивов синхронизации без атомиков крайне непрактично
Возможно, но речь не о практике, а об обучении.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
𝕯mitry 𝖁akulenko
Возможно, но речь не о практике, а об обучении.
Даже для образовательных целей. Как ты вообще собираешься без атомиков жить? Эмулировать их на системных вызовах?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Mikail Bagishov
Даже для образовательных целей. Как ты вообще собираешься без атомиков жить? Эмулировать их на системных вызовах?
Можно переписать их с помощью inline assembly
источник

𝕯𝖁

𝕯mitry 𝖁akulenko... in Rust — русскоговорящее сообществo
Mikail Bagishov
Даже для образовательных целей. Как ты вообще собираешься без атомиков жить? Эмулировать их на системных вызовах?
Алгоритм Паттерсона, к примеру, обходится без них. Хочу его поисследовать, есть несколько моментов, которые не до конца понятны.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
𝕯mitry 𝖁akulenko
Алгоритм Паттерсона, к примеру, обходится без них. Хочу его поисследовать, есть несколько моментов, которые не до конца понятны.
Код в википедии использует атомики. Покажешь реализацию, которая работает без них?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
И мне очень интересно, как это вообще могло бы работать.
Если не используется inline asm, то единственный способ одному потоку увидеть действия другого - это атомарные доступы к памяти.
источник

r

red75prime in Rust — русскоговорящее сообществo
Спинлоки - это оптимизация, чтобы уменьшить количество сисколлов. Разве нет?
источник

𝕯𝖁

𝕯mitry 𝖁akulenko... in Rust — русскоговорящее сообществo
Mikail Bagishov
Код в википедии использует атомики. Покажешь реализацию, которая работает без них?
источник