Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. def get_tasks() do
  2. task_1 =
  3. Task.async(SomeModule, :some_function, [
  4. param_1,
  5. param_2
  6. ])
  7.  
  8. task_2 =
  9. Task.async(SomeModule, :some_function, [
  10. param_1,
  11. param_2
  12. ])
  13.  
  14. task_3 =
  15. Task.async(SomeModule, :some_function, [
  16. param_1,
  17. param_2
  18. ])
  19.  
  20. [task_1, task_2, task_3]
  21. end
  22.  
  23. [
  24. {_, task_1},
  25. {_, task_2},
  26. {_, task_3}
  27. ] =
  28. [
  29. task_1,
  30. task_2,
  31. task_3,
  32. ]
  33. |> MyCode.TaskHelper.yeild_multiple_tasks()
  34.  
  35. defmodule MyCode.TaskHelper do
  36.  
  37. def get_results_or_shutdown(tasks_with_results) do
  38. Enum.map(tasks_with_results, fn {task, res} ->
  39. res || Task.shutdown(task, :brutal_kill)
  40. end)
  41. end
  42.  
  43. @doc """
  44. Returns the result of multiple tasks ran parallely
  45.  
  46. ## Parameters
  47. - task_list: list, a list of all tasks
  48. """
  49. def yeild_multiple_tasks(task_list) do
  50. task_list
  51. |> Task.yield_many()
  52. |> get_results_or_shutdown()
  53. end
  54. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement