Erlang 完成另一项任务后启动长生不老药任务

Erlang 完成另一项任务后启动长生不老药任务,erlang,elixir,phoenix-framework,Erlang,Elixir,Phoenix Framework,请使用任务模块,在任务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

请使用任务模块,在任务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\u something;:timer.sleep2000;你要再来一杯吗_thing@Sheharyar,则会在其他处理继续进行时在后台异步运行该任务吗?不会,但可以在单个任务中包装两个不同的方法调用,并在它们之间加上:timer.sleep。它们都将异步执行,间隔X秒。@Sheharyar,谢谢!