Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_tasks() do
- task_1 =
- Task.async(SomeModule, :some_function, [
- param_1,
- param_2
- ])
- task_2 =
- Task.async(SomeModule, :some_function, [
- param_1,
- param_2
- ])
- task_3 =
- Task.async(SomeModule, :some_function, [
- param_1,
- param_2
- ])
- [task_1, task_2, task_3]
- end
- [
- {_, task_1},
- {_, task_2},
- {_, task_3}
- ] =
- [
- task_1,
- task_2,
- task_3,
- ]
- |> MyCode.TaskHelper.yeild_multiple_tasks()
- defmodule MyCode.TaskHelper do
- def get_results_or_shutdown(tasks_with_results) do
- Enum.map(tasks_with_results, fn {task, res} ->
- res || Task.shutdown(task, :brutal_kill)
- end)
- end
- @doc """
- Returns the result of multiple tasks ran parallely
- ## Parameters
- - task_list: list, a list of all tasks
- """
- def yeild_multiple_tasks(task_list) do
- task_list
- |> Task.yield_many()
- |> get_results_or_shutdown()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement