第乙個併發程式實驗
檔案程式的伺服器
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程式可以由幾百萬個超級...