Elixir 任务
2023-12-15 14:00 更新
任务建立在生成函数的上层,提供了更好的错误报告的反省机制:
iex(1)> Task.start fn -> raise "oops" end
{:ok, #PID<0.55.0>}
15:22:33.046 [error] Task #PID<0.55.0> started from #PID<0.53.0> terminating
** (RuntimeError) oops
(elixir) lib/task/supervised.ex:74: Task.Supervised.do_apply/2
(stdlib) proc_lib.erl:239: :proc_lib.init_p_do_apply/3
Function: #Function<20.90072148/0 in :erl_eval.expr/5>
Args: []
与spawn/1
和spawn_link/1
不同的是,我们用Task.start/1
和Task.start_link/1
时会返回{:ok, pid}
,而不是只有PID.这使得任务可以被用于管理者树上.Task
提供了诸如Task.async/1
和Task.await/1
这样的便捷函数,以及缓解分布性的功能.
我们将在Mix和OTP介绍中探索这些功能,现在只需要记住任务提供了更好的错误报告.
以上内容是否对您有帮助:
更多建议: