RosettaCodeData/Task/Events/Elixir/events.elixir

29 lines
528 B
Text
Raw Permalink Normal View History

2015-11-18 06:14:39 +00:00
defmodule Events do
def log(msg) do
2017-09-23 10:01:46 +02:00
time = Time.utc_now |> to_string |> String.slice(0..7)
IO.puts "#{time} => #{msg}"
2015-11-18 06:14:39 +00:00
end
def task do
log("Task start")
receive do
:go -> :ok
end
log("Task resumed")
end
def main do
log("Program start")
2017-09-23 10:01:46 +02:00
{pid,ref} = spawn_monitor(__MODULE__,:task,[])
2015-11-18 06:14:39 +00:00
log("Program sleeping")
2017-09-23 10:01:46 +02:00
Process.sleep(1000)
2015-11-18 06:14:39 +00:00
log("Program signalling event")
send(pid, :go)
2017-09-23 10:01:46 +02:00
receive do
{:DOWN,^ref,_,_,_} -> :task_is_down
end
2015-11-18 06:14:39 +00:00
end
end
Events.main