Elixir 中的任务与代理:高效并发编程指南
在 Elixir 编程中, GenServer 和 Agent 是两个重要的概念。本文将先探讨 Task 模块,然后介绍 Agent 模块。
1. 任务(Tasks)
Task 模块可用于并发运行作业,即一个接收输入、执行计算然后停止的进程。与 GenServer 进程不同, Task 进程会立即开始工作,不处理请求,并在工作完成后停止。
Task 模块有两种使用方式,取决于任务进程是否需要将结果返回给启动它的进程。前者也称为等待任务(awaited task),下面先讨论这种情况。
1.1 等待任务(Awaited tasks)
等待任务是执行某个函数,将函数结果返回给启动进程,然后终止的进程。以下是一个基本示例:
iex(1)> long_job =
fn ->
Process.sleep(2000)
:some_result
end
iex(2)> task = Task.async(long_job)
iex(3)> Task.await(task)
:some_result
Task.asyn
超级会员免费看
订阅专栏 解锁全文
869

被折叠的 条评论
为什么被折叠?



