• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Fork me on GitHub
            隨筆 - 215  文章 - 13  trackbacks - 0
            <2018年12月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345


            專注即時通訊及網(wǎng)游服務(wù)端編程
            ------------------------------------
            Openresty 官方模塊
            Openresty 標(biāo)準(zhǔn)模塊(Opm)
            Openresty 三方模塊
            ------------------------------------
            本博收藏大部分文章為轉(zhuǎn)載,并在文章開頭給出了原文出處,如有再轉(zhuǎn),敬請保留相關(guān)信息,這是大家對原創(chuàng)作者勞動成果的自覺尊重??!如為您帶來不便,請于本博下留言,謝謝配合。

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            相冊

            Awesome

            Blog

            Book

            GitHub

            Link

            搜索

            •  

            積分與排名

            • 積分 - 215396
            • 排名 - 118

            最新評論

            閱讀排行榜

            節(jié)選自:https://www.sohu.com/a/244980510_473282


            Erlang 的世界和我們的真實世界很像。每個 Erlang 進(jìn)程維護(hù)著自己獨有的內(nèi)存,別的進(jìn)程無法訪問其內(nèi)部狀態(tài),除非它們互發(fā)消息進(jìn)行交流。所有的消息傳遞都是異步的,就像我們的現(xiàn)實世界。

            1>spawn(foo,hello,[]).

            <0.70.0>

            這樣就會創(chuàng)建一個新的進(jìn)程,調(diào)用foo:hello()。進(jìn)程一旦執(zhí)行完這個函數(shù)就會死掉,將所有分配到的內(nèi)存還給BEAM。

            如果你想創(chuàng)建兩個進(jìn)程同時做事,只需spawn兩次:

            1>spawn(foo,hello,[]).

            <0.70.0>

            2>spawn(foo,hello,[]).

            <0.71.0>

            這將創(chuàng)建兩個進(jìn)程并發(fā)調(diào)用foo:hello()。這就是 Erlang 的并發(fā)模型——也叫參與者模式 (Actor model)。

            如果你想整100個進(jìn)程同時做事,調(diào)用spawn 100次即可。簡單粗暴。

            現(xiàn)在我們知道如何創(chuàng)建進(jìn)程,接下來是給它發(fā)消息。

            1>Pid=spawn(foo,loop,[]).

            <0.80.0>

            2>Pid!hello.

            hello

            這里我們啟動一個進(jìn)程調(diào)用 foo:loop()。我們假設(shè)這個loop函數(shù)會遞歸調(diào)用自己,這樣我們的進(jìn)程不會一下就死掉。spawn 會返回一個進(jìn)程ID <0.80.0>,我們將其綁定到 Pid 變量中,并向其發(fā)個消息 hello。 Erlang 里用驚嘆號 ! 發(fā)消息。好了,以上就是異步消息發(fā)送。這也是 Erlang 中兩個進(jìn)程之間交流的唯一手段。

            當(dāng)消息被發(fā)給某進(jìn)程后,該進(jìn)程如何收消息呢?

            1>Pid=spawn(fun()->

            1>receive

            1>hello->io:format("Got hello message~n")

            1>end

            1>end).<0.86.0>

            2>Pid!hello.

            Gothellomessage

            hello

            用 receive 來收消息。你可以在這里用模式匹配來匹配你想要接收的信息,忽略其他的消息。在這個例子中,我們只接收消息 hello。

            我們平時會記不住朋友的電話,所以我們用通訊錄給電話號碼加個名字。在 Erlang 中也沒有必要記住每個進(jìn)程的 Pid,給其注冊個名字即可以后用名字來訪問之。

            1>Pid=spawn(fun()->receivehello->io:format("Got hello message~n")endend).

            <0.93.0>

            2>register(foo,Pid).

            true

            3>foo!hello.

            Gothellomessage

            hello

            只需調(diào)用 register(Name,Pid) 即可給任何進(jìn)程注冊名字。之后我們可以用該名字給進(jìn)程發(fā)消息。

            當(dāng)我們給某進(jìn)程注冊了名字后,我們也能通過查找通訊錄來找到其Pid。

            1>register(foo,spawn(fun()->receivehello->helloendend)).

            true

            2>whereis(foo).

            <0.102.0>

            最后,一個進(jìn)程可以通過調(diào)用 self() 來找到自己的Pid。

            1>self().

            <0.90.0>

            以上6個函數(shù)就這么簡單,再多也沒有了。spawn, send, receive, register, whereis 和 self。就這6個函數(shù),組成 Erlang 的世界觀。

            posted on 2018-12-13 10:22 思月行云 閱讀(658) 評論(0)  編輯 收藏 引用 所屬分類: Erlang
            久久久久久久综合日本| 少妇无套内谢久久久久| 久久艹国产| 99久久香蕉国产线看观香 | 热久久视久久精品18| 久久人人爽人人爽人人片AV高清 | 国产精品久久久福利| 99久久综合狠狠综合久久| 色妞色综合久久夜夜| 成人资源影音先锋久久资源网| 天天久久狠狠色综合| 色妞色综合久久夜夜| 成人精品一区二区久久久| 99精品国产99久久久久久97| 久久精品国产一区二区| 九九精品99久久久香蕉| 久久精品国产亚洲AV蜜臀色欲 | 久久久亚洲裙底偷窥综合| AAA级久久久精品无码区| 久久人人妻人人爽人人爽| 久久久久97国产精华液好用吗| 国产精品9999久久久久| 久久久精品国产免大香伊| 久久亚洲av无码精品浪潮| 2021国产成人精品久久| 国产精品久久久福利| 精品久久久无码人妻中文字幕豆芽| 香蕉久久AⅤ一区二区三区| 亚洲午夜久久影院| 精品久久久久久久| 精品久久久久久中文字幕| av午夜福利一片免费看久久| 久久精品国产亚洲αv忘忧草| 狠狠色丁香久久婷婷综合蜜芽五月| 久久久精品久久久久特色影视| 欧美亚洲另类久久综合| 日本久久久久久中文字幕| 欧美久久精品一级c片片| 99久久国产免费福利| 久久99久久成人免费播放| 久久天天躁狠狠躁夜夜2020老熟妇 |