مدلی که ارلنگ برای همروندی و همزمانی استفاده می کند بر اساس مدل بازیگر (actor model) است. تمام چیزی که برای نوشتن نرم افزار های همروند در ارلنگ نیاز دارید در سه چیز خلاصه می شود: ساخت پروسه، ارسال پیام به پروسه و دریافت و خواندن پروسه ارسال شده میباشد. هر پروسه در ارلنگ دارای مفهومی بنام صندوق پستی است. پیام های ارسالی به هر پروسه درون این صندوق ذخیره می شود و پروسه میتواند براساس صلاح دید خود پیامهایش را بخواند و یا دور بریزد. برای ساختن پروسه جدید در ارلنگ از روش زیر میتوان استفاده کرد:
F = fun() -> 2 + 2 end.
spawn(F).
Spawn به عنوان خروجی شناسه پروسه که به آن PID می گویند را بر میگرداند. از این PID میتوان برای ارسال پیام به پروسه استفاده کرد. ارسال پیام به پروسه به عملگر "!" امکان پذیر است.
Pid ! hello.
زمانی که پیام ارسال شد گیرنده با استفاده از receive می تواند مقدار پیام را بخواند. مثال زیر برنامه کوچکی است که منتظر پیام مینشیند و حسب نوع و مقدار آن واکنشی را نشان میدهد که در این مثال محاسبهی مساحت شکل مورد در خواست است.
-module(calculateGeometry). -compile(export_all). calculateArea() -> receive {rectangle, W, H} -> W * H; {circle, R} -> 3.14 * R * R; _ -> io:format("We can only calculate area of rectangles or circles.") end.
با استفاده از تابع c ماژول را کامپایل کرده و از تابع استفاده میکنیم.
c(calculateGeometry).
CalculateArea = spawn(calculateGeometry, calculateArea, []).
CalculateArea ! {circle, 2}.
هر پروسه با استفاده از تابع()self می تواند از شناسه خودش مطلع شود.