最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Erlang中的并發(fā)程序簡(jiǎn)介

 更新時(shí)間:2015年03月09日 09:16:34   投稿:junjie  
這篇文章主要介紹了Erlang中的并發(fā)程序簡(jiǎn)介,本文講解了Erlang中基本的并發(fā)函數(shù)、并發(fā)程序模板、程序在出錯(cuò)時(shí)立即崩潰的優(yōu)點(diǎn)、為了在互聯(lián)網(wǎng)上執(zhí)行并發(fā)程序等內(nèi)容,需要的朋友可以參考下

Erlang中基本的并發(fā)函數(shù)

1)  Pid =spwan(Mod,Func,Args) 創(chuàng)建一個(gè)新的進(jìn)程來(lái)執(zhí)行apply(Mod,Func,Args),與調(diào)用進(jìn)程并列運(yùn)行,會(huì)使用最新的代碼定義模塊。
2)  Pid!Message 向Pid進(jìn)程異步發(fā)送Message,!為發(fā)送操作符
3)  Receive … end 接收消息

復(fù)制代碼 代碼如下:

 receive
           Pattern1[when Guard1]-> Expression1;
           Pattern2[whenGuard2]->Expression2;

         aftertime->
                   Expressions
         end.

內(nèi)置函數(shù)erlang:system_info(process_limit)可找出所允許的最大進(jìn)程數(shù),默認(rèn)為262144.
進(jìn)程注冊(cè)的內(nèi)置函數(shù)有:
register(AnAtom,Pid)用名稱注冊(cè)Pid
uregister(AnAtom) 注銷關(guān)聯(lián)注冊(cè)
whereis(AnAtom)->Pid|undefined 檢查Pid是否注冊(cè)
registered()->[AnAtom::atom()]返回系統(tǒng)里所有注冊(cè)進(jìn)程的列表。
 
并發(fā)程序模板:
復(fù)制代碼 代碼如下:

-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.

每當(dāng)收到消息時(shí)會(huì)處理它并再次調(diào)用loop(),這一過程稱為尾遞歸,無(wú)需消耗堆??臻g可以一直循環(huán)下去。
 
Erlang并發(fā)程序的錯(cuò)誤處理建立在遠(yuǎn)程監(jiān)測(cè)和處理錯(cuò)誤的基礎(chǔ)上,重點(diǎn)在補(bǔ)救而不是預(yù)防,幾乎沒有防御性代碼,只有在錯(cuò)誤后清理系統(tǒng)的代碼,即讓其他進(jìn)程修復(fù)錯(cuò)誤和任其崩潰。
 
程序在出錯(cuò)時(shí)立即崩潰的優(yōu)點(diǎn):
1)  不編寫防御性代碼,直接崩潰簡(jiǎn)單
2)  別人來(lái)修復(fù)
3)  不會(huì)使錯(cuò)誤惡化
4)  第一時(shí)間舉旗示意
5)  修復(fù)時(shí)不擔(dān)心原因重在清理
6)  簡(jiǎn)化了系統(tǒng)架構(gòu)
監(jiān)視和連接類似,但監(jiān)視是單向的,如果被監(jiān)視的進(jìn)程掛了會(huì)向監(jiān)視進(jìn)程發(fā)一“宕機(jī)“消息,而不是退出信號(hào)?;惧e(cuò)誤處理函數(shù)有:
復(fù)制代碼 代碼如下:

-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運(yùn)行在可信網(wǎng)絡(luò),通常在同一局域網(wǎng)的集群上,并受防火墻保護(hù)?;趕ocket的分布式模型基于TCP/IP不可信網(wǎng)絡(luò).
分布式Erlang的主要問題在于客戶端可以自行決定在服務(wù)器上分裂出多種進(jìn)程,適合于你擁有全部的機(jī)器,并且想在單臺(tái)機(jī)器上控制他們。lib_chan 模塊讓用戶能夠顯式控制自己的機(jī)器分裂出哪些進(jìn)程。
 
為了在互聯(lián)網(wǎng)上執(zhí)行并發(fā)程序:

1)  確保4369端口對(duì)TCP和UDP都開發(fā),該端口保留給epmd(Erlang端口映射守護(hù)進(jìn)程)
2)  選擇1個(gè)或一段連續(xù)的端口給分布式erlang使用,確保這些端口開放,例如:

復(fù)制代碼 代碼如下:

$erl  -name …-setcookie …  -kernelinet_dist_listen_min Min \
           Inet_dist_listen_maxMax

Rpc提供了許多遠(yuǎn)程調(diào)用服務(wù),global里的函數(shù)可以用來(lái)在分布式系統(tǒng)里注冊(cè)名稱以及維護(hù)一個(gè)全連接的網(wǎng)絡(luò)。

Erlang集群就是一組帶有相同cookie的互連節(jié)點(diǎn)。創(chuàng)建cookie的三種方法:
1)  在文件$HOME/.erlang.cookie存放相同的cookie
2)  在Erlang啟動(dòng)時(shí),可以用 –setcookie,例如

復(fù)制代碼 代碼如下:

$erl  -setcookieABCDEFG2048

3)  內(nèi)置函數(shù)erlang:set_cookie(node(),C)在程序中指定

Erlang通過名為端口的對(duì)象與外部程序通信,如果想端口發(fā)送一個(gè)消息,這一消息就會(huì)被發(fā)往與端口相連的外部程序,來(lái)自外部程序的消息會(huì)變成來(lái)自端口的Erlang消息。創(chuàng)建端口的進(jìn)程成為端口的相連進(jìn)程,所有發(fā)往端口的消息都必須標(biāo)明相連進(jìn)程的PID,所有來(lái)自外部程序的消息都會(huì)發(fā)往相連進(jìn)程。

相關(guān)文章

  • Erlang中的匹配模式總結(jié)

    Erlang中的匹配模式總結(jié)

    這篇文章主要介紹了Erlang中的匹配模式總結(jié),本文講解了賦值時(shí)匹配、流程控制中的匹配、消息傳遞匹配等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • 深入淺析RabbitMQ鏡像集群原理

    深入淺析RabbitMQ鏡像集群原理

    當(dāng)單臺(tái) RabbitMQ 服務(wù)器的處理消息的能力達(dá)到瓶頸時(shí),此時(shí)可以通過 RabbitMQ 集群來(lái)進(jìn)行擴(kuò)展,從而達(dá)到提升吞吐量的目的
    2021-08-08
  • CentOS 6.5源碼安裝Erlang教程

    CentOS 6.5源碼安裝Erlang教程

    這篇文章主要介紹了CentOS 6.5源碼安裝Erlang教程,本文講解了源碼編譯安裝的過程和遇到的一些錯(cuò)誤處理方法,需要的朋友可以參考下
    2015-01-01
  • Erlang中的OTP簡(jiǎn)介

    Erlang中的OTP簡(jiǎn)介

    這篇文章主要介紹了Erlang中的OTP簡(jiǎn)介,OTP包含了一組庫(kù)和實(shí)現(xiàn)方式,可以構(gòu)建大規(guī)模、容錯(cuò)和分布式的應(yīng)用程序,包含了許多強(qiáng)大的工具,能夠?qū)崿F(xiàn)H248,SNMP等多種協(xié)議,需要的朋友可以參考下
    2015-03-03
  • Erlang中的并發(fā)程序簡(jiǎn)介

    Erlang中的并發(fā)程序簡(jiǎn)介

    這篇文章主要介紹了Erlang中的并發(fā)程序簡(jiǎn)介,本文講解了Erlang中基本的并發(fā)函數(shù)、并發(fā)程序模板、程序在出錯(cuò)時(shí)立即崩潰的優(yōu)點(diǎn)、為了在互聯(lián)網(wǎng)上執(zhí)行并發(fā)程序等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Erlang中的基本元素操作小結(jié)

    Erlang中的基本元素操作小結(jié)

    這篇文章主要介紹了Erlang中的基本元素操作小結(jié),本文講解了元組(tuple)、記錄(record)、列表(list)、映射組(map)等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Erlang語(yǔ)法學(xué)習(xí)筆記:變量、原子、元組、列表、字符串

    Erlang語(yǔ)法學(xué)習(xí)筆記:變量、原子、元組、列表、字符串

    這篇文章主要介紹了Erlang語(yǔ)法學(xué)習(xí)筆記:變量、原子、元組、列表、字符串,本文簡(jiǎn)明總結(jié)了這5種類型的相關(guān)知識(shí),需要的朋友可以參考下
    2015-01-01
  • Erlang并發(fā)編程介紹

    Erlang并發(fā)編程介紹

    這篇文章主要介紹了Erlang并發(fā)編程介紹,本文講解了進(jìn)程的創(chuàng)建 、進(jìn)程間通信、超時(shí)設(shè)置以及給出代碼實(shí)例,需要的朋友可以參考下
    2015-01-01
  • Erlang IO編程之文件目錄操作常用方法小結(jié)

    Erlang IO編程之文件目錄操作常用方法小結(jié)

    這篇文章主要介紹了Erlang IO編程之文件目錄操作常用方法小結(jié),本文講解了常用的文件操作如打開文件、讀取文件、寫入文件、刪除文件等,需要的朋友可以參考下
    2015-01-01
  • Erlang中的模塊與模式匹配介紹

    Erlang中的模塊與模式匹配介紹

    這篇文章主要介紹了Erlang中的模塊與模式匹配介紹,本文分別對(duì)模塊與模式匹配做了講解,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

大城县| 台东县| 温州市| 宁化县| 蒙山县| 桂阳县| 吉木萨尔县| 潢川县| 轮台县| 边坝县| 乌鲁木齐市| 山阳县| 二手房| 信宜市| 松原市| 龙陵县| 鱼台县| 汕尾市| 黄梅县| 唐河县| 乐清市| 青川县| 山阴县| 邓州市| 平利县| 永吉县| 南漳县| 土默特左旗| 凤台县| 泌阳县| 西畴县| 区。| 绍兴县| 县级市| 五大连池市| 安平县| 宁德市| 苍山县| 家居| 棋牌| 朝阳市|