Events: Difference between revisions

Content added Content deleted
(→‎{{header|Elixir}}: uses Time module)
Line 332: Line 332:
<lang elixir>defmodule Events do
<lang elixir>defmodule Events do
def log(msg) do
def log(msg) do
time = Time.utc_now |> to_string |> String.slice(0..7)
{h,m,s} = :erlang.time
:io.fwrite("~2.B:~2.B:~2.B => ~s~n",[h,m,s,msg])
IO.puts "#{time} => #{msg}"
end
end
Line 346: Line 346:
def main do
def main do
log("Program start")
log("Program start")
pid = spawn(Events,:task,[])
{pid,ref} = spawn_monitor(__MODULE__,:task,[])
log("Program sleeping")
log("Program sleeping")
:timer.sleep(1000)
Process.sleep(1000)
log("Program signalling event")
log("Program signalling event")
send(pid, :go)
send(pid, :go)
receive do
:timer.sleep(100)
{:DOWN,^ref,_,_,_} -> :task_is_down
end
end
end
end
end
Line 359: Line 361:
{{out}}
{{out}}
<pre>
<pre>
1:39:30 => Program start
06:27:05 => Program start
1:39:30 => Program sleeping
06:27:05 => Program sleeping
1:39:30 => Task start
06:27:05 => Task start
1:39:31 => Program signalling event
06:27:06 => Program signalling event
1:39:31 => Task resumed</pre>
06:27:06 => Task resumed
</pre>


=={{header|Erlang}}==
=={{header|Erlang}}==