Приостановить процесс Erlang с помощью получения после истечения времени бесконечности
Я новичок в Erlang, и я хочу приостановить в функции. Я использую receive with infinity timeout, моя функция выглядит так:
suspend() ->
receive
after
infinity->ok
end.
Когда я запускал инструмент диализатора, он возвращал "Функция не имеет локального возврата". Должен ли я заменить эту функцию с таймером: сон (бесконечность). Для приостановки, какой лучше? Огромное спасибо.
1 ответ
Решение
Функция timer:sleep/1
определяется как:
sleep(T) ->
receive
after T -> ok
end.
который по сути такой же, как ваш suspend/0
функция, так что любой подход будет работать. Я бы посоветовал использовать timer:sleep/1
тем не менее, поскольку он уже определен для вас, и любой, кто его прочитает, сразу узнает, что это такое и что он делает.