Elixir语言中 Process.sleep 相关用法介绍如下。
用法:
sleep(timeout)
@spec sleep(timeout()) :: :ok
休眠给定 timeout 的当前进程。
timeout 是以整数形式休眠的毫秒数或原子 :infinity 。当给定:infinity时,当前进程将永远休眠,不消费也不回复消息。
使用此函数时要格外小心。对于几乎所有在 Elixir 中使用   的情况,可能有一种更正确、更快和更精确的方式来实现消息传递。sleep/1 
例如,如果您正在等待某个进程执行某些操作,最好通过消息来传达此类操作的进度。
换句话说,不要:
Task.start_link(fn ->
  do_something()
  ...
end)
# Wait until work is done
Process.sleep(2000)
但是做:
parent = self()
Task.start_link(fn ->
  do_something()
  send(parent, :work_is_done)
  ...
end)
receive do
  :work_is_done -> :ok
after
  # Optional timeout
  30_000 -> :timeout
end
对于上述情况,首选  和Task.async/1  。Task.await/2 
同样,如果您正在等待进程终止,请监视该进程而不是休眠。不要:
Task.start_link(fn ->
  ...
end)
# Wait until task terminates
Process.sleep(2000)
而是这样做:
{:ok, pid} =
  Task.start_link(fn ->
    ...
  end)
ref = Process.monitor(pid)
receive do
  {:DOWN, ^ref, _, _, _} -> :task_is_down
after
  # Optional timeout
  30_000 -> :timeout
end
相关用法
- Elixir Process.send用法及代码示例
 - Elixir Process.spawn用法及代码示例
 - Elixir Process.send_after用法及代码示例
 - Elixir Process.monitor用法及代码示例
 - Elixir Process.demonitor用法及代码示例
 - Elixir Process.delete用法及代码示例
 - Elixir Process.whereis用法及代码示例
 - Elixir Process.group_leader用法及代码示例
 - Elixir Process.put用法及代码示例
 - Elixir Process.registered用法及代码示例
 - Elixir Process.register用法及代码示例
 - Elixir Process.get用法及代码示例
 - Elixir Process.exit用法及代码示例
 - Elixir Process.unregister用法及代码示例
 - Elixir Process.get_keys用法及代码示例
 - Elixir Process.list用法及代码示例
 - Elixir Protocol.extract_protocols用法及代码示例
 - Elixir Protocol.consolidate用法及代码示例
 - Elixir Protocol.derive用法及代码示例
 - Elixir Protocol用法及代码示例
 - Elixir Protocol.extract_impls用法及代码示例
 - Elixir Path.basename用法及代码示例
 - Elixir Path.rootname用法及代码示例
 - Elixir Path.type用法及代码示例
 - Elixir Path.split用法及代码示例
 
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Process.sleep(timeout)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
