Qual è il modo migliore in elixir per creare un processo in primo piano che ticcherà su ogni dato intervallo di tempo?Come creare un emettitore di eventi con elisir, il modo alternativo
Il mio problema principale è che un approccio come:
defmoulde Ticker do
def tick do
do_something()
:timer.sleep(1000)
tick
end
end
opere, ma è sbagliato di progettazione. Sicuramente non ticchetta ogni secondo, ma ogni secondo PIÙ il tempo necessario per fare_qualcosa(). Potrei generare un processo per gestire il "qualcosa" ma c'è ancora un piccolo ritardo.
Inoltre, sto cercando di creare un'app mix, ci sono alcuni GenServer coinvolti e un processo principale in primo piano (quello che sto chiedendo qui) che dovrebbe chiamare i server ogni x secondi. C'è un altro modo per farlo?
Mi preoccupo della deriva del tempo potenziale. Come potrei evitare qualsiasi deriva temporale? –
'apply_interval' dovrebbe essere abbastanza decente, ma i documenti affermano solo che" I timeout non sono esatti, ma sono lunghi almeno quanto richiesto ". –