在无限超时后使用 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
,因为它已经为您定义,任何阅读它的人都会立即知道它是什么以及它的作用。
我是 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
,因为它已经为您定义,任何阅读它的人都会立即知道它是什么以及它的作用。