Erlang并发编程与错误处理全解析
1. 定时器的实现
在并发编程中,定时器是一个非常实用的工具。我们可以利用 receive 超时机制来实现一个简单的定时器。下面是具体的代码实现:
-module(stimer).
-export([start/2, cancel/1]).
start(Time, Fun) -> spawn(fun() -> timer(Time, Fun) end).
cancel(Pid) -> Pid ! cancel.
timer(Time, Fun) ->
receive
cancel ->
void
after Time ->
Fun()
end.
在这个代码中, stimer:start(Time, Fun) 函数会在 Time 毫秒后执行 Fun 函数,并且返回一个进程标识符(PID),这个 PID 可以用于取消定时器。 stimer:cancel(Pid) 函数则用于取消指定 PID 的定时器。
我们可以通过以下方式来测试这个定时器:
1> Pid = stimer:start(5000, fun() -> io:format("timer event~n") end)
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



