erlang學習理解筆記(1)

2021-07-04 23:35:39 字數 992 閱讀 7808

第乙個併發程式實驗

檔案程式的伺服器

afile_server.erl 檔案:

-module(afile_server). %%模組名稱

-export([start/1,loop/1]).  %%要匯出的方法(別的模組可以呼叫)

start(dir)->

spawn(afile_server,loop,[dir]).  %%spawn是建立乙個執行afile_server 模組中loop(,[dir])方法的程序 並返回乙個程序標示符

loop(dir)->

receive    %%接收資料 匹配處理

->

client ! ;

}->

full=filename:join(dir,file),

client ! ;

end,

loop(dir).

檔案程式的客戶端

afile_client檔案:

-module(afile_client).

-export([ls/1,get_file/2]).

ls(server)->

server ! , %%向伺服器傳送請求

receive %%接收伺服器返回的資料處理

->

filelist

end.

get_file(server,file)->

server ! },

receive

->

content

end.   

erlang呼叫:

1>c(afile_server).

2>c(afile_client).

3>server=afile_server:start("."). 開啟服務返回乙個程序的標示符

4>afile_client:get_file(server,"test.txt"). 向server這個程序傳送請求並得到返回資料

輸出test.txt文字的內容

Erlang學習筆記(二)

今天在練習map對映組的時候 本人erlang版本17.01 根據 erlang程式設計 第二版這本書上操作,在取值的時候發現問題,如下 書中操作 如下圖 明顯兩個程式執行不一樣,後來看到官方文件,才發現是這個樣子 在上圖中明確指出,在map對映組中取值的時候用 取值,後來又看了看兩者區別發現兩者只...

Erlang學習筆記(一)

erlang雖然目前還不是主流語言,但有可能在未來一段時間發揮重要的作用.即使你不用erlang,也可以從erlang的設計和erlang的社群的智慧型中得到啟發,就算是從開啟思路,全面認識計算本質和平行計算特性的角度出發,erlang也值得了解.死鎖,競態,越來越多的鎖帶來了越來越複雜的問題.比如...

Erlang學習筆記(二)

erlang的併發特性源自語言本身而並非作業系統。它把現實世界模擬成一系列的程序,其間僅靠交換訊息進行互動,因此erlang簡化了並行程式設計。在erlang世界中,存在並行程序但是沒有鎖,沒有同步方法,也不存在記憶體汙染的可能,因為erlang根本沒有共享記憶體.erlang程式可以由幾百萬個超級...