在Erlang中定期执行某个操作的最佳方法是使用timer
模块提供的send_interval
函数。这个函数可以在指定的时间间隔内向指定的进程发送消息。
以下是一个简单的示例,每隔5秒向当前进程发送一个消息:
-module(my_interval).
-export([start/0]).
start() ->
timer:send_interval(5000, self(), my_message).
在这个示例中,timer:send_interval/3
函数将每隔5秒向当前进程发送一个my_message
消息。你可以在receive
语句中处理这些消息,例如:
loop() ->
receive
my_message ->
%% 在这里执行你的操作
io:format("Doing something...~n"),
loop()
end.
在这个示例中,loop/0
函数将无限循环,每次接收到my_message
消息时都会执行一次操作。
需要注意的是,timer:send_interval/3
函数返回一个tref
引用,你可以使用这个引用来取消定时器,例如:
TimerRef = timer:send_interval(5000, self(), my_message),
%% 在这里执行一些操作
timer:cancel(TimerRef).
在这个示例中,定时器被取消,不再向当前进程发送消息。
领取专属 10元无门槛券
手把手带您无忧上云