日本一区二区免费播放_麻豆导航_久久精品99_国产性av_色婷婷噜噜久久国产精品12p_av福利资源_精品综合久久

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > group_leader的設計和用途

group_leader的設計和用途
2010-01-13 23:18:17  作者:  來源:
一直對erlang的group_leader這個概念很困惑,因為*nix系統也有類似的名詞但是只是和進程組管理有關系。查了很多文檔才知道,erlang的group_leader的設計意圖和作用,解釋如下:

先看下著段代碼運作:

log_group_leader(OGL) ->
    receive Msg ->
            io:format(user, "Got message ~p~n",[Msg]),
            OGL ! Msg,
            log_group_leader(OGL)
    end.

ioclient(NGL) ->
    group_leader(NGL, self()),
    io:format("Hello World~n"),
    io:format("Hello again~n").

iotest() ->
    OldGroupLeader = group_leader(),
    NewGroupLeader = spawn(?MODULE, log_group_leader, [OldGroupLeader]),
    spawn(?MODULE, ioclient, [NewGroupLeader]).

說白了group_leader就是決定erlang的io控制臺的輸出到那個進程。

這個特性很有幫助。我們在做服務器程序的時候 會有大量的診斷信息通過類似printf打印需要輸出到控制臺查看。 代碼里東一塊西一塊都是診斷代碼, 而且一旦程序調試完畢 我們可能不在需要這些信息污染環境。這個是單機的情況,對于分布式的情況就更復雜,很難把其他主機上打出的診斷信息匯總到一個地方集中查看。

group_leader就是解決這個問題的。 erlang里面的io:format之類的函數執行的時候最早輸出會被重定向到該進程的group_leader進程去,而且進程是位置無關的,也就是說在其他主機上的信息都可以匯總。

有了這個特性 比如說我在其他的機器上執行條rpc命令 這個命令的結果是會被截獲 傳送回來的 而不是要到目標主機的終端上顯示。

group_leader是繼承的,每當spawn一個進程的時候,會自動繼承父進程的這個屬性。rpc的實現上也很大努力保證了這個語義不變。

在實踐中也要注意這個特性的副作用,就是: 你用rpc執行的命令 就是想在目標機器上顯示結果 但是看不到 因為被截獲了。


安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
相關熱詞搜索:用途 設計
主站蜘蛛池模板: 日本邪恶网站 | 美女国产在线观看 | 成人在线网 | 精品日本三级在线观看视频 | 日本高清视频www夜色资源 | 日韩精品久久久久久 | 国产特黄特色的大片观看免费视频 | 日本xxx在线观看免费播放 | 精品国产3p一区二区三区 | 国产jizzjizz视频全部免费 | 精品久久看 | 国产精品久久久久9999高清 | 日本高清视频免费在线观看 | 久操精品在线观看 | 天天做天天爱天天爽综合区 | www.日韩| 亚洲久操 | 国产剧在线观看 | 久久精品视频免费 | 国产高清区 | 国产成人高清在线 | 久久亚洲国产高清 | 激情网址在线观看 | 久久久久久91 | 秋霞人成福利在线观看视频 | 99热这里只有精品9 99热这里只有精品国产99 | 秋霞日韩理论高清在线观看 | 国产欧美一区二区三区久久 | 久久精品这里热有精品 | 欧美高清在线视频一区二区 | 国产成人综合久久综合 | 日本三级日产三级国产三级 | 久伊人| 久久久久久9 | 精品久久久久久久高清 | 国产成人福利在线 | 欧美日韩免费在线视频 | 日本视频在线看 | 国产欧美日韩图片一区二区 | jizz中文字幕 | 欧洲免费无线码一二区 |