Size: a a a

2021 April 25

Е

Евгений in pro.elixir
Мютекс ему и сообщит, что теперь он овнер.
источник

ŹR

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

LL

Lama Lover in pro.elixir
Так это и есть очередь задач. Просто ты не задачи посылаешь, а входишь в транзакцию. Идея паттерна очередь не меняется
источник

Е

Евгений in pro.elixir
По мне так это просто реализация мютекса. Можно спинлоками, можно очередями.
источник

ŹR

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

LL

Lama Lover in pro.elixir
Понятное дело, что в эликсире как таковые мьютексы просто не существуют, потому что процессы неизбежно имеют message box, а память не делится
источник

LL

Lama Lover in pro.elixir
Ну, типа того
источник

Е

Евгений in pro.elixir
Ну я такой и наговнякал, на генсервере, ожидатели сидят в очереди, ждут. Очень кастати пришелся GenServer.reply
источник

Е

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

M

MrFlorius in pro.elixir
Подскажите пожалуйста, как jwt токен rsa-ключом подписать?
источник

JD

John Doe in pro.elixir
Приветствую господа. Тут возник вопрос очень интересный для меня. Изучаю возможности языка для того, чтобы заняться изучением более глубоко, чем побаловаться и написать пару либ. Суть вопроса, я скомпилировал тестовый проект через mix compile.app и у меня встал вопрос, а как это все дело корректно запускать? К примеру, через тот же микс... Не руками же beam'ники подгружать и всем этим делом управлять. Извиняюсь, если вопрос глупый :)
источник

LL

Lama Lover in pro.elixir
Вообще для запуска BEAM программ нужен erts. Артефакт так или иначе содержит его. Обычно пользуются одним из двух вариантов: докер с mix (я не рекомендую) или релизы. Про релизы лучше почитать mix help release и всё с этим связанное. Есть ещё маргинальный вариант запекать erts и код в самораспакующийся бинарник с помощью Bakeware
источник

JD

John Doe in pro.elixir
О как интересно, прям с наскоку как я понял ничего не "прокатит". Благодарю за ответ и пошел думать по этому поводу.
источник

LL

Lama Lover in pro.elixir
Вообще релизы совсем не сложно создавать. Банально командой mix release
источник

JD

John Doe in pro.elixir
Благодарю вас, уважаемый. Спасли мне пару десятков минут поиска информации и дали именно то, что мне надо. :)
источник

A ß in pro.elixir
mix run
источник

ML

Maksim Lapshin in pro.elixir
в расте есть планирование при компиляции доступа к данным. Писать может  только одна зона кода до тех пор, пока оно не завернуто в специальный тип Arc (mutex), сообщающий, что писать можно из разных мест, но рантайм гарантирует, что не будет одновременного доступа.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В пони есть специальный тип, который гарантирует что есть только одна ссылка на запись и она существует только в одном акторе одновременно. Ее можно передать в другой актор (как consume в расте, в предыдущем акторе она исчезнет) либо преобразовать в ссылку только на чтение, тогда такую ссылку можно уже будет раздвоить. Но вернуть ее в состояние на запись уже нельзя.
источник

ŹR

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

ŹR

Źmićer Rubinštejn in pro.elixir
Ну и ещё отличие в том что эрланг копирует между акторами, а пони соответственно считает ссылки.

И соответственно у него есть GC , и поэтому я сравнил его с Go
источник