Skip to content

Instantly share code, notes, and snippets.

@Slavenin
Created November 2, 2023 14:28
Show Gist options
  • Save Slavenin/d58b0840fcfb7f0393472f697b753130 to your computer and use it in GitHub Desktop.
Save Slavenin/d58b0840fcfb7f0393472f697b753130 to your computer and use it in GitHub Desktop.
lesson 7 snippets
defmodule Test.MixProject do
use Mix.Project
def project do
[
app: :test,
version: "0.1.0",
elixir: "~> 1.15",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
aliases: [],
deps: []
]
end
defp elixirc_paths(_), do: ["lib"]
end
defmodule Example do
def echo(a) do
IO.inspect(a)
end
end
defmodule Example do
def echo() do
receive do
{:message, msg} -> IO.inspect(msg)
end
echo()
end
end
pid = spawn(Example, :echo, [])
send(pid, {:message, "hello"})
defmodule Example do
def echo() do
receive do
{:echo, msg} -> IO.inspect(msg)
_ -> IO.inspect("wtf?")
end
echo()
end
end
defmodule Example do
def echo() do
receive do
{:echo, msg} -> IO.inspect(msg)
_ -> IO.inspect("wtf?")
after
5_000 ->
IO.inspect("empty")
end
echo()
end
end
defmodule Example do
def echo() do
receive do
{:message, msg} -> IO.inspect(msg)
end
echo()
end
end
:erlang.process_info(pid, :messages)
spawn(fn ->
pid =
spawn_link(fn ->
receive do
{from, a, b} -> send(from, {:answer, a + b})
end
end)
send(pid, {self(), 1, 2})
receive do
{:answer, value} -> IO.inspect(["answer", value])
end
end)
defmodule Example do
def echo() do
spawn(fn ->
pid =
spawn_link(fn ->
receive do
{from, a, b} -> send(from, {:answer, a + b})
:bah -> raise "oops"
end
end)
send(pid, {self(), 1, 2})
receive do
{:answer, value} -> IO.inspect(["answer", value])
end
pid =
spawn_link(fn ->
receive do
{from, a, b} -> send(from, {:answer, a + b})
:bah -> raise "oops"
end
end)
send(pid, :bah)
end)
end
end
defmodule Example do
def echo() do
spawn(fn ->
pid =
spawn_link(fn ->
receive do
{from, a, b} -> send(from, {:answer, a + b})
:bah -> raise "oops"
end
end)
send(pid, {self(), 1, 2})
receive do
{:answer, value} -> IO.inspect(["answer", value])
end
Process.flag(:trap_exit, true)
pid =
spawn_link(fn ->
receive do
{from, a, b} -> send(from, {:answer, a + b})
:bah -> raise "oops"
end
end)
send(pid, :bah)
receive do
exitInfo -> IO.inspect(exitInfo)
end
end)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment