Size: a a a

2020 July 22

ML

Maksim Lapshin in ErlangRus
Alex Sherman
то есть один раз на ините по таймеру, потом в handle_info взять TimerReference и уничтожить таймер, после чего там же erlang:send_after/3 ?
да. Таймер стоит уничтожать, потому что если (когда) ты сам себе пришлешь сообщение для проверки, то получишь вторую волну сообщений:
старый таймер ещё жив, но ссылка есть только на новый. Старый пришлет сообщение, ты новый потеряешь, а перезапишешь продолжение старого и т.д.

Ещё раз пришлешь сообщение — запустишь третью волну и так далее.
источник

В

Вертолетчик... in ErlangRus
Alex Sherman
то есть один раз на ините по таймеру, потом в handle_info взять TimerReference и уничтожить таймер, после чего там же erlang:send_after/3 ?
В коде ковбоя это прям всё уже есть кстати. Смотри init и handle_info


https://github.com/ninenines/cowboy/blob/master/src/cowboy_clock.erl
источник

AS

Alex Sherman in ErlangRus
о, спасибо
источник

В

Вертолетчик... in ErlangRus
Причём я обычно прибиваю таймер так:
erlang:cancel_timer(Timer, [{async, true}, {info, false}])
То есть как бы пофиг, что он в обратную пришлёт
источник

SB

S B in ErlangRus
А у кого какой тулсет, кроме erlang-mode и rebar3?
источник

V

Vasilii Demidenok in ErlangRus
я на ivy-erlang-complete
источник

PG

Pig Greenest in ErlangRus
lsp-mode + sourcer
источник

SB

S B in ErlangRus
Pig Greenest
lsp-mode + sourcer
А че там есть? Из того, что эрланг-мод не может?
источник

ММ

Михаил Малюк... in ErlangRus
Maksim Lapshin
да. Таймер стоит уничтожать, потому что если (когда) ты сам себе пришлешь сообщение для проверки, то получишь вторую волну сообщений:
старый таймер ещё жив, но ссылка есть только на новый. Старый пришлет сообщение, ты новый потеряешь, а перезапишешь продолжение старого и т.д.

Ещё раз пришлешь сообщение — запустишь третью волну и так далее.
надо было просто вот эту ссылку дать =) https://habr.com/ru/post/155173/
источник

TT

Taras 🦀 Taraskin in ErlangRus
S B
А у кого какой тулсет, кроме erlang-mode и rebar3?
n2o v4.4 + mad + otp.mk
источник

TT

Taras 🦀 Taraskin in ErlangRus
👍 прикольно) спс
источник

PG

Pig Greenest in ErlangRus
S B
А че там есть? Из того, что эрланг-мод не может?
линтер, goto definition, дополнение
источник

AB

Alexander Bogosyan in ErlangRus
Alex Sherman
ок, спасибо, попробую
Только лучше использовать erlang:start_timer а не send_after, потому что тогда тебе ещё прилетит и timer ref, который ты можешь сравнить с запомненным и проверить , ждёшь ли ты ещё этот таймер (полезно если ты делаешь cancel_timer с async =true, как его и надо делать чтобы не получить deadlock ;)
источник

SB

S B in ErlangRus
Pig Greenest
линтер, goto definition, дополнение
Хм, надо попробовать.
источник

AS

Alex Sherman in ErlangRus
Alexander Bogosyan
Только лучше использовать erlang:start_timer а не send_after, потому что тогда тебе ещё прилетит и timer ref, который ты можешь сравнить с запомненным и проверить , ждёшь ли ты ещё этот таймер (полезно если ты делаешь cancel_timer с async =true, как его и надо делать чтобы не получить deadlock ;)
спасибо
источник

В

Вертолетчик... in ErlangRus
Alexander Bogosyan
Только лучше использовать erlang:start_timer а не send_after, потому что тогда тебе ещё прилетит и timer ref, который ты можешь сравнить с запомненным и проверить , ждёшь ли ты ещё этот таймер (полезно если ты делаешь cancel_timer с async =true, как его и надо делать чтобы не получить deadlock ;)
Мнения разделились )))
источник

V

Vasilii Demidenok in ErlangRus
+ 1 за send_after/3,4 😛
источник

VS

Vladimir Sekisov in ErlangRus
Pig Greenest
lsp-mode + sourcer
последний erlang_ls
уже совсем годный,
лучше работает, настраивается опять же
легко под любой layout
источник

ML

Maksim Lapshin in ErlangRus
Alexander Bogosyan
Только лучше использовать erlang:start_timer а не send_after, потому что тогда тебе ещё прилетит и timer ref, который ты можешь сравнить с запомненным и проверить , ждёшь ли ты ещё этот таймер (полезно если ты делаешь cancel_timer с async =true, как его и надо делать чтобы не получить deadlock ;)
ага, разумно, если ты именно хочешь разделять разные таймеры и не допускать принудительной внешней активации этим сообщением
источник

VS

Vladimir Sekisov in ErlangRus
Alexander Bogosyan
Только лучше использовать erlang:start_timer а не send_after, потому что тогда тебе ещё прилетит и timer ref, который ты можешь сравнить с запомненным и проверить , ждёшь ли ты ещё этот таймер (полезно если ты делаешь cancel_timer с async =true, как его и надо делать чтобы не получить deadlock ;)
при send_after тоже прилетит,
кроме формата, эти функции
имеют один и тот же эффект
источник