Pull to refresh

Comments 6

Обучать Расту людей это хорошее и доброе дело, при всём моём неприятии рекламы всё же общее впечатление о статье положительное.

«Rust предлагает хорошие решения к задачам многопоточности. В Rust нет места таким распространенным проблемам, как гонки данных…»

Ну нельзя же так над родным языком издеваться. Сначала подумал что это chat GPT нагенерил, он у него вроде поскладнее выходит.

Нет проблемы гонки данных, так как данные не гоняются.

Если пишите в официальном блоге, так хоть литературу посмотрите не предмет устоявшейся терминологии.

Стоит ещё упомянуть такие способы синхронизации как Multiple/Single Producer Multiple/Single Consumer (aka mpsc, broadcast, oneshot, watch). Вместо разделения доступа к данным, данные можно просто передавать между потоками по "каналу"

let even_nums: Vec<_> = nums.par_iter().filter(|&&x| x % 2 == 0).collect();

А зачем тут двойной амперсанд?

потому что там двойное заимствование окажется. Одно от итератора, второе от потока, судя по всему. Чтобы внутри лямбды работать со значениями, а не со ссылками явным образом обозначаем сигнатуру, а дальше сахаратор языка самостоятельно сделает разыменование до значения. Либо можно сделать это ручками

|x| **x % 2 == 0

Но если функция окажется сложнее и значение x понадобиться несколько раз, то придётся каждый раз разыменовывать.

Как-то смешались в кучу кони люди. Статья должна быть о параллелизме тогда, а не о многопоточности. Ну и про Arc всего лишь крошечный абзац, а про Send/Sync так и вовсе ничего не рассказали. Про каналы, как способ общения между тредами тоже ноль.

Sign up to leave a comment.