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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。