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