Приостановить процесс 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тем не менее, поскольку он уже определен для вас, и любой, кто его прочитает, сразу узнает, что это такое и что он делает.

Другие вопросы по тегам