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/1spawn_link/1不同的是,我们用Task.start/1Task.start_link/1时会返回{:ok, pid},而不是只有PID.这使得任务可以被用于管理者树上.Task提供了诸如Task.async/1Task.await/1这样的便捷函数,以及缓解分布性的功能.

我们将在Mix和OTP介绍中探索这些功能,现在只需要记住任务提供了更好的错误报告.


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号