Приостановить процесс Erlang с помощью получения после истечения времени бесконечности - PullRequest
0 голосов
/ 27 января 2019

Я новичок в Erlang, и я хочу приостановить в функции.Я использую функцию приема с бесконечным таймаутом, моя функция выглядит следующим образом:

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

Когда я запускаю инструмент диализатора, он возвращает «Функция не имеет локального возврата».Должен ли я заменить эту функцию с таймером: сон (бесконечность).Для приостановки, какой лучше?Большое вам спасибо.

1 Ответ

0 голосов
/ 27 января 2019

Функция timer:sleep/1 определяется как:

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

, что по существу совпадает с вашей suspend/0 функцией, поэтому любой подход будет работать.Однако я бы посоветовал использовать timer:sleep/1, поскольку он уже определен для вас, и любой, кто его прочитает, сразу узнает, что это такое и что он делает.

...