<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

      當(dāng)前位置:首頁 > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > group_leader的設(shè)計(jì)和用途

      group_leader的設(shè)計(jì)和用途
      2010-01-13 23:18:17  作者:  來源:
      一直對erlang的group_leader這個(gè)概念很困惑,因?yàn)?nix系統(tǒng)也有類似的名詞但是只是和進(jìn)程組管理有關(guān)系。查了很多文檔才知道,erlang的group_leader的設(shè)計(jì)意圖和作用,解釋如下:

      先看下著段代碼運(yùn)作:

      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控制臺的輸出到那個(gè)進(jìn)程。

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

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

      有了這個(gè)特性 比如說我在其他的機(jī)器上執(zhí)行條rpc命令 這個(gè)命令的結(jié)果是會被截獲 傳送回來的 而不是要到目標(biāo)主機(jī)的終端上顯示。

      group_leader是繼承的,每當(dāng)spawn一個(gè)進(jìn)程的時(shí)候,會自動(dòng)繼承父進(jìn)程的這個(gè)屬性。rpc的實(shí)現(xiàn)上也很大努力保證了這個(gè)語義不變。

      在實(shí)踐中也要注意這個(gè)特性的副作用,就是: 你用rpc執(zhí)行的命令 就是想在目標(biāo)機(jī)器上顯示結(jié)果 但是看不到 因?yàn)楸唤孬@了。


      安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        亚洲一区二区三区不卡国产_亚洲 | 亚洲欧美日韩一区二区在线观看 | 亚洲日本成年在线看 | 在线日本妇人成熟免费a√ 亚洲乱码精品不卡 | 亚洲高清电影免费一区二区 | 亚洲欧洲日本无在线码播放 |