Oprócz faktu, że Erlang został specjalnie opracowany do pracy w sytuacjach współbieżnych / równoległych / rozproszonych, dwie główne techniki, które wykorzystuje, aby to umożliwić, to:
Bez skutków ubocznych:
Oznacza to, że jeśli dasz funkcji kawałek danych, który chcesz wykonać, nie będzie to miało wpływu, z wyjątkiem bardzo ścisłych przypadków, na cokolwiek innego w systemie / uruchomionym procesie. Oznacza to, że jeśli wykonasz funkcję 300 razy jednocześnie, żadne z tych 300 wykonań funkcji nie wpłynie na żadne inne.
Technika implementacji zapewniająca brak skutków ubocznych nazywa się „niezmiennością”, co z grubsza oznacza, że nie może być zmutowana (zmieniona). Oznacza to, że zaraz po utworzeniu zmiennej wartość tej zmiennej nie może być modyfikowana. Erlang implementuje to zachowanie za pomocą „pojedynczego przypisania”, więc po przypisaniu wartości do zmiennej nie można jej przypisać ponownie.
X = 1.
X = 2. // This is not a valid operation
Zapewnia to, że żaden kod nie może przypadkowo zmienić wartości X powodującej wyścig, dlatego jest z natury bezpieczny dla wątków, a jednoczesne użycie staje się banalne. Jest to bardzo rzadkie zachowanie wśród języków oprogramowania i największy sposób, w jaki Erlang jest tak dobrze przystosowany do równoczesnego wykonywania.
Model aktora:
Jest to szczególny sposób modelowania, który pokazał, że upraszcza implementację przetwarzania równoległego i zarządzanie nim. Prosto z wikipedii (http://en.wikipedia.org/wiki/Actor_model):
Model aktora przyjmuje filozofię, że wszystko jest aktorem. Jest to podobne do wszystkiego, co jest filozofią obiektową stosowaną w niektórych obiektowych językach programowania, ale różni się tym, że obiektowe oprogramowanie jest zazwyczaj wykonywane sekwencyjnie, podczas gdy model aktora jest z natury zbieżny. Aktor to jednostka obliczeniowa, która w odpowiedzi na otrzymaną wiadomość może jednocześnie: wysyłać skończoną liczbę wiadomości do innych aktorów; stworzyć skończoną liczbę nowych aktorów; wyznacz zachowanie, które zostanie zastosowane dla następnej otrzymanej wiadomości. Nie ma założonej sekwencji powyższych działań i można je przeprowadzić równolegle. Oddzielenie nadawcy od wysłanej komunikacji było zasadniczym postępem w modelu aktora umożliwiającym asynchroniczne struktury komunikacji i kontroli jako wzorce przekazywania wiadomości.