Başladığından beri zaman aralıklarında aralıklı aralıkların sayısını veren bir işlemin nasıl gerçekleştirileceğini düşünüyordum. Burada doğruluk kaybediyor muyum? Bir süre sonra ve ağır müşteri istismarı sonrasında doğruluğu kaybetmeden bunu nasıl uygularım. Erlang'da nasıl yapılacağına şaşırdım.Erlang'de doğru saat
Doğal olarak, şimdi() gibi bir sistem çağrısı kullanmak istemiyorum. Eğer yapıyoruz gibi sayma
-module(clock).
-compile([export_all]).
start(Time) ->
register(clock, spawn(fun() -> tick(Time, 0) end)).
stop() -> clock ! stop.
tick(Time, Count) ->
receive
nticks ->
io:format("~p ticks have passed since start~n", [Count])
after 0 -> true
end,
receive
stop ->
void
after Time ->
tick(Time, Count + 1)
end.
Evet, bunun en kolay yol olduğunu düşünüyorum. Yapılmakta olan özyinelemeli çağrıların sayısını azaltmak için, "kene çözünürlüğü" kavramını "sonra .." zaman aşımı ile kullanmaya devam edebilirim. – buddhabrot