我也想运行500个任务
await(..)
用于前一个系列 (a) 或任务 (b) 的结果。也就是说,它应该在延迟后简单地运行。可选地,每次延迟可能是
little随机的:2秒,然后4秒,然后3秒,然后1秒....
如何做到这一点?以一种简单的方式。最好,除了 OTP 本身之外没有其他依赖项。我可以使用
:timer.sleep(my_rand_delay)
但这会阻塞主线程,是吧?
给你!
tasks =
for n <- 0..7, into: [] do
:timer.sleep(Enum.random(1000..3000))
Task.async(fn ->
:timer.sleep(Enum.random(1000..3000))
IO.inspect(n, label: "Running task")
end)
end
IO.inspect("Waiting for tasks to run")
Task.await_many(tasks)
IO.inspect("All tasks finished")