Size: a a a

Сrystal Lang — русскоговорящее сообщество

2021 August 04

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Так "разделяй и властвуй" же.  Делишь массив на части и ничего никуда не пушишь.
Либо используешь примитивы специально для параллельных вычислений типа очереди.
В Crystal есть "атомарные" типы, там всё нормально с синхронизацией
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
https://crystal-lang.org/api/1.1.1/Atomic.html
Обёртка над примитивными типами конечно, но для более сложного есть Mutex :)
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Concurrency safe. If many fibers try to set the atomic in parallel, only one will succeed.

Concurrency... parallel. Ага. Интересно как.
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Но в общем-то по сути реализовано внутри правильно
источник

Jøhn Đøꝩsøn in Сrystal Lang — русскоговорящее сообщество
Rust. Ты принципиально не сможешь использовать одну коллекцию из нескольких тредов не обернув её перед этим в мьютекс.
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
То есть сама она всё-таки не синхронизирована 😏
источник

Jøhn Đøꝩsøn in Сrystal Lang — русскоговорящее сообщество
А ты предлагаешь платить оверхед мьютекса в контекстах где синхронизация не нужна?
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
Я предлагаю не делать некорректных заявлений
источник

YS

Yura Sokolov in Сrystal Lang — русскоговорящее сообщество
Мьютекс есть, атомики есть, что вам ещё надо?
Мне кажется, это не языки "не рассчитаны на мультитрединг", а программисты, которым мало атомиков с мьютексом.
источник

Jøhn Đøꝩsøn in Сrystal Lang — русскоговорящее сообщество
Заявление: код с race condition в расте не компилируется.
источник

АК

Андрей Коновод... in Сrystal Lang — русскоговорящее сообщество
а если я уверен что там по логике программы race condition не возникнет, но компилятор мне не верит?
источник

DS

Damir Sharipov in Сrystal Lang — русскоговорящее сообщество
если компилятор не прав смотри  п.1 😁
источник

АК

Андрей Коновод... in Сrystal Lang — русскоговорящее сообщество
ну и соответственно утверждение про платить оверхед когда он не нужен тогда верно. Хотя я недостаточно знаю раст чтоб  сказать всегда ли там можно без оверхеда сделать. Скажем многопоточный софтрендер, когда все потоки пишут в соседние куски массива без всякой синхронизации.
источник

YS

Yura Sokolov in Сrystal Lang — русскоговорящее сообщество
Это в расте без мьютексов вроде не сделаешь.
Даже double linked list без ref count в каждой ноде вроде нельзя сделать. А уж intrusive, да чтоб несколько списков…
Вот выдаёт Гугль https://rust-unofficial.github.io/too-many-lists/
источник

YS

Yura Sokolov in Сrystal Lang — русскоговорящее сообщество
https://news.ycombinator.com/item?id=16443688
Personally, I've written quite a bit of production Rust code, and I've done so without ever touching 'unsafe' or needing a linked list. If I really did need a linked list, I'd either grab a good one off crates.io, or just knock out a quick one using unsafe and raw pointers. I mean, Rust can do basically anything C does if I ask nicely. It's just that if I choose to write "C in Rust", then I get about same safety guarantees that C offers.
источник

VF

Vlad Faust in Сrystal Lang — русскоговорящее сообщество
Mutex в Кристале — concurrency-safe, но не parallel-safe. А Thread::Mutex дедлочит в примитивных сценариях (читай багованный). Так было в 0.36, по крайней мере
источник

YS

Yura Sokolov in Сrystal Lang — русскоговорящее сообщество
Я с утра почитал исходники. Покажи мне строчку, в которой он не parallel safe?
источник

YS

Yura Sokolov in Сrystal Lang — русскоговорящее сообщество
Видимо, с поры 0.36 они исправили его.
источник

VF

Vlad Faust in Сrystal Lang — русскоговорящее сообщество
Надеюсь, что так
источник

E

Etki in Сrystal Lang — русскоговорящее сообщество
И какое оно отношение имеет у вопросу стандартной библиотеки?
источник