All Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages: current_process = self() # Spawn an Elixir process (not an operating system one!) spawn_link(fn -> send(current_process, {:msg, "hello world"}) end) # Block until the message is received receive do {:msg, contents} -> IO.puts(contents) end Due to their lightweigh
![The Elixir programming language](https://cdn-ak-scissors.b.st-hatena.com/image/square/bd4a14723190659191d862eb71e5f159f0cc2421/height=288;version=1;width=512/https%3A%2F%2Felixir-lang.org%2Fimages%2Fsocial%2Felixir-og-card.jpg)