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

Suspend a Erlang process by using receive after infinity timeout

我是 Erlang 的新手,我想在一个函数中挂起。我使用无限超时接收,我的函数看起来像:

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

当我 运行 透析器工具时,它 return "Function has no local return"。我应该用 timer:sleep(infinity) 替换这个函数吗?对于暂停,哪个更好?非常感谢。

函数timer:sleep/1定义为:

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

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