通过在无限超时后使用接收来挂起Erlang进程

时间:2019-01-27 14:09:25

标签: process erlang dialyzer

我是Erlang的新手,我想暂停一个函数。我使用具有无限超时的接收,我的功能如下:

suspend() ->
  receive
  after
     infinity->ok
  end.

当我运行透析器工具时,它返回“功能没有本地返回值”。我应该用timer:sleep(infinity)代替此功能。要暂停,哪个更好?非常感谢。

1 个答案:

答案 0 :(得分:1)

函数timer:sleep/1定义为:

sleep(T) ->
    receive
    after T -> ok
    end.

基本上与您的suspend/0函数相同,因此这两种方法都可以使用。不过,我建议您使用timer:sleep/1,因为它已经为您定义了,任何阅读它的人都会立即知道它是什么以及它的作用。