Model Concurrency
Erlang是特別用來設計model同時發生的事件,透過設計一個Erlang processes set,來解決concurrency problem。相當於在OOP中設計class hierarchy。
Erlang VM會自動利用parallel computer (multicore or networked computers or cloud)的parallelism的硬體能力,來執行Erlang concurrent programs。
硬體的parallelism不能被保證,因為可能被cloud 自動控制,或是被OS控制資源的multi-core CPU,所以同樣的concurrent program是否真的被平行處理也不能被保證。
不過Erlang JVM保證了concurrency 的behavior在任何一個Erlang JVM上一模一樣,不管底層的硬體和OS。
建立Concurrent Erlang processes
在erlang中,要創造一個concurrent lightweight process (不是OS的process)就要利用以下的erlang primitive function:Process間的溝通
靠的是傳message,語法有點爆笑:用驚嘆號表示傳送訊息給某個承接PID的“變數(暫且叫之,不知道erlang的術語是什麼)”叫做Susannah的,訊息內容第一個參數是把self reference傳出去,後面的字串則是訊息。
有點可愛。
當然接收訊息也可以寫個listener or callback:
From和Message這兩個“變數”就自動綁定傳進來的message對應參數。
沒有留言:
張貼留言