和朋友切磋高并發的時候,又一次涉及了Erlang,Erlang出自名門愛立信,具有穩定性極高的虛擬機和平臺庫,Facebook用它實現了聊天系統,Amazon 開發了SimpleDB,最令人驚嘆的是What'sApp了,高并發的處理機制令人矚目,是時候了解一下Erlang了。
世界是并行的,Erlang程序反應了我們思考和交流的方式,人作為個體通過發送消息進行交流,如果有人死亡,其他人會注意到。
Erlang里的模塊類相當于OOPL中的類,進程相當于OOPL里的對象或類實例。
并發編程可以用來提升性能,創建可擴展和容錯的系統,以及編寫清晰和可理解的程序來控制現實世界里的應用。
并發程序是以一種并發編程語言編寫的程序,并發編程語言擁有用于編寫并發程序的語言結構。Erlang的并發程序是由互相通信的多組順序進程組成,一個進程就是一個輕量級的虛擬機,可以執行單個的Erlang函數,只能通過發送和接收消息來與其他進程通信。也就是說,并發性是由Erlang虛擬機提供的,并操作系統的并發控制粒度要小很多。
在Erlang里:
1) 創建和銷毀進程是非常快的
2) 在進程間發送消息是非常快的
3) 進程在所有操作系統上都具有相同的行為方式
4) 可以擁有大量的進程
5) 進程間不共享內存,是完全獨立的
6) 唯一的溝通方式是消息傳遞,每個進程都有一個郵箱與進程同步創建。
動態代碼載入是Erlang特性之一,函數調用的總是最新模塊里的最新版函數,哪怕當代碼在模塊里運行時重新編譯了該模塊也是如此。