Dowolna struktura w Erlangu może zostać użyta jako wiadomość – prymitywy (liczby całkowite, zmiennoprzecinkowe, znaki, atomy), krotki, listy, a nawet funkcje.
Przykładowy kod:
Pid = spawn(Mod, Func, Args) % uruchamia funkcje Func jako nowy proces Pid = spawn(Node, Mod, Func, Args) % uruchamia funkcje Func na zdalnym węźle Node
Pid ! a_message % wysyła wiadomość do procesu (asynchronicznie)
receive % odbiera wiadomość wysłaną do tego procesu a_message -> do_something; {data, Data_content} -> do_something_else(); % To jest 2-ka składają się z atomu i pewnych danych {hello, Text} -> io:format("Got hello message: ~s", [Text]); {goodbye, Text} -> io:format("Got goodbye message: ~s", [Text]) end.
Prosty serwer można zaimplementować na bazie prostej pętli:
-export([start/1, loop/1, net_state/2, get_state/1]).
start(S) -> Pid = spawn(mymodule, loop, [S]). % uruchom proces serwera
% kod wykonywany po stronie serwera
loop(State) -> receive {mymodule, get_state, Pid, Ref} -> Pid ! {mymodule, state, Ref, State}, loop(State); {mymodule, new_state, Pid, Ref, State2} -> Pid !