多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 基于Erlang的并發程序簡要

基于Erlang的并發程序簡要

來源:程序員人生   發布時間:2015-03-26 09:10:11 閱讀次數:3230次

 Erlang中基本的并發函數

1)  Pid =spwan(Mod,Func,Args) 創建1個新的進程來履行apply(Mod,Func,Args),與調用進程并列運行,會使用最新的代碼定義模塊。

2)  Pid!Message 向Pid進程異步發送Message,!為發送操作符

3)  Receive … end 接收消息

receive

           Pattern1[when Guard1]-> Expression1;

           Pattern2[whenGuard2]->Expression2;

         aftertime->

                   Expressions

         end.

內置函數erlang:system_info(process_limit)可找出所允許的最大進程數,默許為262144.

進程注冊的內置函數有:

register(AnAtom,Pid)用名稱注冊Pid

uregister(AnAtom) 注銷關聯注冊

whereis(AnAtom)->Pid|undefined 檢查Pid是不是注冊

registered()->[AnAtom::atom()]返回系統里所有注冊進程的列表。

 

并發程序模板:

-module(ctemplate).

-compile(export_all).

 

start() ->

         Spwan(?MODULE,loop,[]).

 

rpc(Pid,Request) ->

         Pid! {self(),Request},

         receive

                   {Pid,Respone}->

                            Response

         end.

 

loop(X) ->

         receive

                   Any->

                            Io:format(“Received:~p ~n”, [Any]),

                            loop(X)

         end.

 

每當收到消息時會處理它并再次調用loop(),這1進程稱為尾遞歸,無需消耗堆棧空間可以1直循環下去。

 

Erlang并發程序的毛病處理建立在遠程監測和處理毛病的基礎上,重點在補救而不是預防,幾近沒有防御性代碼,只有在毛病后清算系統的代碼,即讓其他進程修復毛病和任其崩潰。

 

程序在出錯時立即崩潰的優點:

1)  不編寫防御性代碼,直接崩潰簡單

2)  他人來修復

3)  不會使毛病惡化

4)  第1時間舉旗示意

5)  修復時不擔心緣由重在清算

6)  簡化了系統架構

監視和連接類似,但監視是單向的,如果被監視的進程掛了會向監視進程發1“宕機“消息,而不是退出信號。基本毛病處理函數有:

-spec spwan_link(Fun) ->Pid

-spec spwan_monitor(Fun)-> {Pid,Ref}

-spec process_flag(trap_exit,true)

-spec link(Pid) ->true

-spec unlink(Pid) -> true

-spec erlang:monitor(process,Item) ->Ref

-spec exit(Why) -> none()


散布式模型:散布式erlang 和基于socket的散布式模型。散布式erlang運行在可信網絡,通常在同1局域網的集群上,并受防火墻保護。基于socket的散布式模型基于TCP/IP不可信網絡.

散布式Erlang的主要問題在于客戶端可以自行決定在服務器上分裂出多種進程,合適于你具有全部的機器,并且想在單臺機器上控制他們。lib_chan 模塊讓用戶能夠顯式控制自己的機器分裂出哪些進程。

 

為了在互聯網上履行并發程序:

1)  確保4369端口對TCP和UDP都開發,該端口保存給epmd(Erlang端口映照守護進程)

2)  選擇1個或1段連續的端口給散布式erlang使用,確保這些端口開放,例如:

$erl  -name …-setcookie …  -kernelinet_dist_listen_min Min

           Inet_dist_listen_maxMax

Rpc提供了許多遠程調用服務,global里的函數可以用來在散布式系統里注冊名稱和保護1個全連接的網絡。

Erlang集群就是1組帶有相同cookie的互連節點。創建cookie的3種方法:

1)  在文件$HOME/.erlang.cookie寄存相同的cookie

2)  在Erlang啟動時,可以用

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩欧美亚洲一区 | 福利午夜 | 日韩欧美成人乱码一在线 | 伊人精品视频在线 | 99久久精品国产综合男同 | 国产欧美日韩在线观看一区二区三区 | 天堂成人| 免费国产在线视频 | 午夜私人福利影院 | 小说区 综合区 都市激情 | 亚洲成人黄色片 | 国产精品久久久精品三级 | 日韩一级片免费在线观看 | 欧美亚洲国产精品久久蜜芽 | 黑人xxxx日本 | 亚洲第成色999久久网站 | 欧美韩国日本在线 | 12306午夜被窝播播影院yw188 | 国产亚洲精品九九久在线观看 | 日本wwwcom| 国内久久久久久久久久 | 国产精品第3页 | 肉视频在线观看 | 国产日韩欧美一区二区 | 亚洲欧美日韩国产精品一区 | 日韩欧美极品 | 大片免费在线观看网址 | 国产福利自产拍在线观看 | 国产精品视频久久 | www.九色.com| 亚洲 欧美 中文 日韩欧美 | 欧美最猛黑人xxxx黑人猛交98 | 欧美性xxxx极品hd欧美 | 日韩啊v| 精品不卡一区中文字幕 | 国产精品久久久精品三级 | 日韩一区二区三区四区五区 | 性精品| 久久精品这里有 | 2022国产福利在线观看 | 国产亚洲欧美精品久久久 |