Size: a a a

2021 April 25

ML

Maksim Lapshin in pro.elixir
Я неоднократно видел как «ой, в сишечке можно очень быстро», те без мьютекса, но без гарантий, что никто не поменяет данные.

В итоге оно работает, но частенько крешится (если повезет)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Да, пони даёт гарантии. Можешь глянуть кстати на досуге
источник

ML

Maksim Lapshin in pro.elixir
Не, не буду. Есть раст, он приносит пользу, есть эрланг, он тоже полезен.

Я не понял, что есть в пони, который интересен только как умозрительная конструкция. Я этого уже на хаскеле повидал
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Для меня пони это то как должен быть го
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Почему он не приносит пользу - обсуждать видимо не будем
источник

ML

Maksim Lapshin in pro.elixir
Да потому что слишком мало используется :)
источник

ML

Maksim Lapshin in pro.elixir
И за одну минуту непонятно зачем его втаскивать
источник

LL

Lama Lover in pro.elixir
Ну, можно реализовывать чтение перед записью
Процесс получил копию данных из агента, изменил их. Потом атомарно проверил копию и то, что лежит в агенте, и записал если они равны
источник

Е

Евгений in pro.elixir
А если не равны, то снова прочитал и опять обработал и попытался записать и так далее? :)
источник

Е

Евгений in pro.elixir
Это уже как транзакции в мнезии
источник

Е

Евгений in pro.elixir
В пони есть акторы, а что есть в расте?
источник

LL

Lama Lover in pro.elixir
Да, оно так и работает. Понятное дело, что у этого способа есть свои ограничения, но он очень хорошо работает, когда память делят мало акторов, а операция очень резвая.
А про то что операция может не завершиться — это возможно и с мьютексом, конечно же. Если есть вероятность что доступ очень частый, то нужно реализовать очередь задач
источник

Е

Евгений in pro.elixir
Эм с мютексом-то как операция не сможет завершиться?
источник

Е

Евгений in pro.elixir
Я тут наговнякал мютекс, с очередью внутри.
источник

LL

Lama Lover in pro.elixir
Ну, актор хочет взять мьютекс, а он уже взят. Актор опять хочет взять мьютекс, а он уже взят
И т.д.
Типа в перерывах между попытками взять мьютекс, кто-то другой его отпускает и берёт
источник

LL

Lama Lover in pro.elixir
Тогда лучше убрать мьютекс и оставить просто очередь задач
источник

Е

Евгений in pro.elixir
Не обязательно, актор пытается залочить мютекс и блокируется пока мютекс не освободится.
источник

Е

Евгений in pro.elixir
Я так и сделал
источник

Е

Евгений in pro.elixir
то о чем ты говоришь - это try_lock он редко когда нужен
источник

LL

Lama Lover in pro.elixir
А как он поймёт что мьютекс освободился?
источник