Size: a a a

2020 September 15

AK

Aleksey Kluchnikov in ErlangRus
Aleksey Kluchnikov
в очередь концептуально правильнее и безопаснее
И да, еще и проще. Синхронный вызов генсервера даст этот lock из коробки
источник

ML

Maksim Lapshin in ErlangRus
Elmir
подскажите, годная ли идея юзать ets:update_counter для того чтобы лочить доступ к какомоу либо ресурсу в эрланг?
ты не можешь с его помощью залочить. Ты можешь только атомарно проверить наличие флага, но подождать не получится.

Не надо так, напиши лок сервер на gen_server
источник

V

Vasilii Demidenok in ErlangRus
Лучше уж тогда взять готовый локер, чем городить своё. 🙂 А если нужно своё, кастомное - то все примитивы аля CAS уже есть на ets и atomics. Вопрос лишь в том нужно ли активное ожидание, или хочется чтобы разбудили.
источник

𝕊

𝕊𝕖𝕣𝕘𝕖𝕚... in ErlangRus
Иванов Иванов
У меня не сработало
Потому что unmatched_returns это про другое. Как выше уже писали, здесь overspecs/underspecs или specdiffs
источник

ИИ

Иванов Иванов... in ErlangRus
𝕊𝕖𝕣𝕘𝕖𝕚
Потому что unmatched_returns это про другое. Как выше уже писали, здесь overspecs/underspecs или specdiffs
+1 - оба работают
источник

ML

Maksim Lapshin in ErlangRus
воу какую неожиданную багу словили.

Оказывается будет больно и плохо использовать enif_alloc_env на  шедулерском треде. Всё взорвется и испачкает стены чем-то неприятным
источник

EK

Evgeny Khramtsov in ErlangRus
почему? а как enif_send тогда делать? а также термы хранить между nif-коллами?
источник

EK

Evgeny Khramtsov in ErlangRus
а, это бага в эрланге
источник

ML

Maksim Lapshin in ErlangRus
Evgeny Khramtsov
а, это бага в эрланге
ты посмотрел на моё письмо?
источник

EK

Evgeny Khramtsov in ErlangRus
где? в мейллисте эрланга? нет
источник

ML

Maksim Lapshin in ErlangRus
Evgeny Khramtsov
где? в мейллисте эрланга? нет
ну, я туда написал
источник

ML

Maksim Lapshin in ErlangRus
в принципе можно обойтись и скудным апи erl_driver, но там нет whereis
источник

ML

Maksim Lapshin in ErlangRus
Maksim Lapshin
в принципе можно обойтись и скудным апи erl_driver, но там нет whereis
А, можно дернуть erts_whereis
источник

ML

Maksim Lapshin in ErlangRus
Нестыковка erl_driver и erl_nif прям расстраивает :(

Не все env-ы равны.
источник

V

Vasilii Demidenok in ErlangRus
Какой у тебя юзкейс для enif_alloc_env ? на нём же нельзя память освобождать нормально, только дропать весь env
источник

ML

Maksim Lapshin in ErlangRus
Vasilii Demidenok
Какой у тебя юзкейс для enif_alloc_env ? на нём же нельзя память освобождать нормально, только дропать весь env
Прекрасно, дропаем целиком. Но беда в том, что в контексте driver port call им нельзя пользоваться, потому что он создается с привязкой к псевдопроцессу и такое разрешено только в тредах, которые через tsd не помечены как шедулерные
источник

ML

Maksim Lapshin in ErlangRus
Те по коду выглядит так, что нельзя даже в обычной нифке сделать enif_alloc_env и сделать в нем множественные операции с мапами, потому что именно они триггерят валидацию в дебаг режиме
источник

V

Vasilii Demidenok in ErlangRus
хм, любопытно
источник

ML

Maksim Lapshin in ErlangRus
Все это выглядит как сырое место, в котором слишком много умолчаний сделали про кишки. Те очень неочевидно, что alloc env _обязан_ вызываться на чужом треде
источник

AB

Alex Bubnov in ErlangRus
Еяпп, gauge это последнее значение при снятии метрик.
источник