好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Erlang中的注冊進程使用實例

Erlang中的注冊進程使用實例

熱門標簽:武漢AI電銷機器人 外呼系統會封嗎 萬利達綜合醫院地圖標注點 股票配資電銷機器人 在電子版地圖標注要收費嗎 地圖標注如何弄全套標 電銷機器人 深圳 南京電銷外呼系統哪家好 實體店地圖標注怎么標

之前看到 Erlang 中的注冊進程時,對注冊并不理解,主要是不理解注冊的原子的作用域。剛才突然想明白了:

復制代碼 代碼如下:

注冊進程關聯的原子具有全局作用域

也就是說關聯了注冊進程之后的原子可以全局被使用

Erlang 中的并發機制是通過消息郵箱實現的,進程間進行通訊的方式只有消息郵箱,而進程間通訊需要知道進程的進程號,而使用 spawn 產生新進程時會返回新進程的進程號供使用。

一個最簡單的進程間通信的程序如下

復制代碼 代碼如下:

-module(test).

start() ->
    spawn(?MODULE, loop, []).

loop() ->
    io:format("Waiting for new message.~n"),
    receive
        M -> io:format("New message: ~p~n", [M])
    end,
    loop().

在 Erlang Shell 中使用 c(test) 編譯這個模塊,之后就可以簡單的使用了.

在下面的代碼中,語句前面的注釋表示解釋,語句后面的注釋表示輸出值, % => 后面的值表示語句的返回值

復制代碼 代碼如下:

% 編譯這個模塊
c(test).

% 開啟無限循環
Pid = test:start().
% Waiting for new message.                             % 新進程 spawn 后立刻運行
% => 0.35.0>                                          % 返回新進程的進程號

% 向進程發送消息
Pid ! 'message'.
% New message: message                                 % 接收到消息
% Waiting for new message.                             % 繼續接收消息
% => message                                           % 語句返回值,而非進程返回消息


為了用戶不用每次都 Pid ! 'message',可以加入一個 call 方法進行包裝一下。
復制代碼 代碼如下:

call(Pid, M) ->
    Pid ! M.

這樣就可以使用 test:call(Pid, 'message') 發送消息了。

但是這樣寫還有個明顯的弊端,調用 call 時需要 Pid 參數,但是又不能去掉,因為需要進程號才能通信,所以使用時需要用戶維護一個進程號。

而 Erlang 提供了注冊進程的機制用來把原子關聯到進程中,可以解決這個問題

使用 register(atom, Pid) 可以將 atom 關聯到進程號為 Pid 的進程上,這個原子就

修改上面的 start 函數為

復制代碼 代碼如下:

start() ->
    register(testp, spawn(?MODULE, loop, [])).

這樣,新的進程將關聯到原子 testp,此時原子就可以當作 Pid 那樣使用 "消息發送操作符" !
復制代碼 代碼如下:

testp ! 'message'

于是可以修改上面的 call 函數,去掉 Pid 參數,而使用關聯后的原子,這個關聯后的原子不止在模塊內有效,在全局作用域中都是有效的。
復制代碼 代碼如下:

call(M) ->
    testp ! M.

因此使用注冊進程修改后的程序如下
復制代碼 代碼如下:

-module(test).

start() ->
    register(testp, spawn(?MODULE, loop, [])).

loop() ->
    io:format("Waiting for new message.~n"),
    receive
        M -> io:format("New message: ~p~n", [M])
    end,
    loop().

call(M) ->
    testp ! M.


注冊相關的 BIF
復制代碼 代碼如下:

% 注冊 atom 到 Pid

register(atom, Pid).

% 取消 atom 的注冊
unregister(atom).

% 返回 atom 關聯的進程號,如果未關聯,返回 undefined
whereis(atom).

% 返回系統中所有已注冊的進程名
registered().

標簽:濟源 濟寧 汕頭 臺州 安徽 廣東 泰安 武威

巨人網絡通訊聲明:本文標題《Erlang中的注冊進程使用實例》,本文關鍵詞  Erlang,中的,注冊,進程,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Erlang中的注冊進程使用實例》相關的同類信息!
  • 本頁收集關于Erlang中的注冊進程使用實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 男人狂躁进女人免费视频| 国产91人妻精品一区二| 丝瓜视频成人app下载| 欧美性护士| 乌克兰美女a级正片| 巜趁夫不在公侵犯15分钟| 免费国产看片软件| 亚洲人成网站在线播放942一| 欧美视频一区二区| 健身教练漫画免费观看| 99无码精品一级毛片| 国产精品漂亮美女在线观看| 久久精品综合免费观看| 国产亚洲欧美在线人成aaaa| 亚洲AV欧洲AV人人爽爽电影| 小受性瘾放荡的np文| 18????HD高潮流水| 国产AV精品国语对白河南小伙| 夜夜嗨视频网| 男人干女人| 男女性日出水来的视频| 模特精品一区二区三区| 韩漫免费观看全部| 国产恋夜全部视频列表网站| 扒开双腿疯狂喷水高潮av网站 | freeFuckvideosXXXX| 国产色精品久久人妻无码按摩| 五月色婷婷综合狠狠爱舒服毛茸| 夜噜噜噜噜噜| 办公室双腿打开揉弄在线观看| 欧美xxxx8888视频| 大香煮伊手机一区| 韩国三级花房乱爱在线观看| 欲奴 美剧 二季出了吗| 着衣爆乳揉みま痴汉电车2| 扒开粉嫩的小缝喷白浆下| 能看了下面流黄水的书免费| 无限资源电影在线观看完整版| 鲁鲁狠狠狠7777一区二区| 动漫美女啪啪| chinese男gay|