defmodule Events do def log(msg) do {h,m,s} = :erlang.time :io.fwrite("~2.B:~2.B:~2.B => ~s~n",[h,m,s,msg]) end def task do log("Task start") receive do :go -> :ok end log("Task resumed") end def main do log("Program start") pid = spawn(Events,:task,[]) log("Program sleeping") :timer.sleep(1000) log("Program signalling event") send(pid, :go) :timer.sleep(100) end end Events.main