首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang的计时器:运行时apply_after/4崩溃

Erlang的计时器:运行时apply_after/4崩溃
EN

Stack Overflow用户
提问于 2016-12-05 05:12:52
回答 1查看 463关注 0票数 1

我指的是after-4

代码语言:javascript
复制
2> c(counter).
{ok,counter}
3> counter:start().
** exception error: undefined function timer:apply_after/4
     in function  counter:start/0 (counter.erl, line 40)

-module(counter).
-compile(export_all).

counter(State) ->
  receive
    {From, {add, Number}} ->
      NewNumber = State+Number,
      From ! {self(), NewNumber},
      counter(NewNumber);
    {From, {resolve}} ->
          From ! {self(), State},
          counter(0);
     terminate ->
       ok
   end.

add(Pid, Number) ->
  timer:apply_after(1000, ?MODULE, fun add/2, [Pid, 10]),
  Pid ! {self(), {add, Number}},
  receive
    {Pid, Msg} -> Msg
  after 3000 ->
    timeout
  end.

resolve(Pid) ->
  Pid ! {self(), {resolve}},
  receive
    {Pid, Msg} -> Msg
  after 3000 ->
    timeout
  end.

handle_info(resolve) ->
  resolve(self()),
  erlang:send_after(3000, self(), resolve).

start() ->
  Pid = spawn(?MODULE, counter, [0]),
  timer:apply_after(1000, ?MODULE, fun add/2, [Pid, 10]),
  Pid.

为什么计时器模块没有正确加载?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-05 07:22:05

docs显式地声明函数应该是一个原子。你这是在传递乐趣。将“趣味添加/2”更改为简单的“添加”,并确保add/2已导出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40967488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档