Elixir语言中 Task.await_many
相关用法介绍如下。
用法:
await_many(tasks, timeout \\ 5000)
(从 1.11.0 开始)
@spec await_many([t()], timeout()) :: [term()]
等待来自多个任务的回复并返回它们。
此函数接收任务列表并在给定的时间间隔内等待它们的回复。它返回结果列表,其顺序与 tasks
输入参数中提供的任务的顺序相同。
如果任何任务进程死亡,调用者进程将以与该任务相同的原因退出。
超时,以毫秒或 :infinity
为单位,可以使用默认值 5000
给出。如果超时,则调用者进程将退出。任何链接到调用者进程的任务进程(使用 async
启动任务时就是这种情况)也将退出。任何捕获退出或未链接到调用者进程的任务进程将继续运行。
此函数假定任务的监视器仍处于活动状态或监视器的:DOWN
消息在消息队列中。如果有任何任务被监控,或者消息已经收到,这个函数将等待超时时间。
对于任何给定的任务,此函数只能调用一次。如果您希望能够多次检查 long-running 任务是否已完成其计算,请改用
。yield_many/2
与 OTP 行为的兼容性
不建议在 OTP 行为中执行 await
long-running 任务,例如
。有关详细信息,请参阅GenServer
。await/2
例子
iex> tasks = [
...> Task.async(fn -> 1 + 1 end),
...> Task.async(fn -> 2 + 3 end)
...> ]
iex> Task.await_many(tasks)
[2, 5]
相关用法
- Elixir Task.await用法及代码示例
- Elixir Task.async用法及代码示例
- Elixir Task.async_stream用法及代码示例
- Elixir Task.yield_many用法及代码示例
- Elixir Task.Supervisor.async_stream用法及代码示例
- Elixir Task.Supervisor用法及代码示例
- Elixir Task.completed用法及代码示例
- Elixir Task.Supervisor.start_child用法及代码示例
- Elixir Task.yield用法及代码示例
- Elixir Task.Supervisor.async_nolink用法及代码示例
- Elixir Task.Supervisor.start_link用法及代码示例
- Elixir Task用法及代码示例
- Elixir Time.add用法及代码示例
- Elixir Time.new用法及代码示例
- Elixir Tuple.duplicate用法及代码示例
- Elixir Time.to_erl用法及代码示例
- Elixir Tuple用法及代码示例
- Elixir Time.utc_now用法及代码示例
- Elixir Tuple.sum用法及代码示例
- Elixir Time.to_iso8601用法及代码示例
- Elixir Time.from_iso8601用法及代码示例
- Elixir Time.from_erl!用法及代码示例
- Elixir Time.from_seconds_after_midnight用法及代码示例
- Elixir Tuple.product用法及代码示例
- Elixir Time.truncate用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Task.await_many(tasks, timeout \\ 5000)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。