0
Task
モジュールを使用してください。タスクXが完了した後、またはタスクXの秒後にタスクYを開始するのに最適なアプローチは何ですか?別のタスクが完了した後にエリクシールタスクを開始する
Task
モジュールを使用してください。タスク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
いいえ、2つの異なるメソッド呼び出しを単一の 'Task'に':timer.sleep'で囲むことができます。両方とも非同期で実行され、X秒間に実行されます。 – Sheharyar