Process 在无限超时后使用receive挂起Erlang进程

Process 在无限超时后使用receive挂起Erlang进程,process,erlang,dialyzer,Process,Erlang,Dialyzer,我是Erlang新手,希望在函数中挂起。我使用无限超时接收,我的函数如下所示: suspend() -> receive after infinity->ok end. 当我运行透析器工具时,它返回“函数没有本地返回”。我应该用定时器替换这个函数:sleep(无穷大)。对于暂停,哪一个更好?非常感谢。功能定时器:睡眠/1定义为: sleep(T) -> receive after T -> ok end. 这与您的susp

我是Erlang新手,希望在函数中挂起。我使用无限超时接收,我的函数如下所示:

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

当我运行透析器工具时,它返回“函数没有本地返回”。我应该用定时器替换这个函数:sleep(无穷大)。对于暂停,哪一个更好?非常感谢。

功能
定时器:睡眠/1
定义为:

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

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

使用来自的建议来消除透析器警告:在函数定义之前的行中添加
-spec suspend()->no_return()。
。非常感谢