0
请使用Task
模块,在任务X完成后或任务X的x秒后启动任务Y的最佳方法是什么?完成另一个任务后开始药剂任务
请使用Task
模块,在任务X完成后或任务X的x秒后启动任务Y的最佳方法是什么?完成另一个任务后开始药剂任务
根据您要求在X完成或5秒后开始Y的要求,您应该使用消息来指示任务Y并给Y超时。这应该是诀窍:
defmodule Schedule do
def run do
IO.puts "running it..."
spawn &task1/0
end
def task1 do
pid = spawn &task2/0
# do your work here
IO.puts "working on task 1"
:timer.sleep 6_000
send pid, :start
IO.puts " task 1 done"
end
def task2 do
receive do
:start -> :ok
after
5_000 -> :ok
end
# do your work here
IO.puts "working on task 2"
end
end
你也可以使用任务,但不是真的需要一个简单的情况。
你为什么不做一些像'A.do_something; :timer.sleep(2000); B.do_another_thing' – Sheharyar
@Sheharyar,它会在后台异步运行任务而其他处理继续吗? – user1232968
不,但您可以在两个不同的方法调用中使用':timer.sleep'在一个'Task'中包装它们。它们都将被异步执行,它们之间有X秒。 – Sheharyar