2016-03-30 15 views
4

グループリーダーとはどのような関係にあり、どのようにI/Oモジュールと関連していますが、インターネットで役立つものは何も見つかりませんでした。誰かが私を説明できますか?私はエリキシル1.2ブック(デイブ・トーマス)からシナリオを以下しているグループリーダーとは何ですか

:第二ウィンドウで
enter image description here

、なぜ彼は:erlang_group_leaderを渡すのですか?それは何のために良いですか?

答えて

6

From documentation

group_leader() -> pid() 

は、機能を評価するプロセスのグループリーダーのプロセスIDを返します。

すべてのプロセスはプロセスグループのメンバーであり、すべてのグループにグループリーダーがあります。グループからのすべてのI/Oはグループリーダーに送られます。新しいプロセスが生成されると、生成プロセスと同じグループリーダーを取得します。最初は、システムの起動時に、initはそれ自身のグループリーダーでも、すべてのプロセスのグループリーダーでもあります。

そして:

group_leader(GroupLeader, Pid) -> true 

タイプ:

GroupLeader = Pid = pid() 

がGroupLeaderにはPidのグループリーダーを設定します。通常、これは、特定のシェルから開始されたプロセスがinitよりも別のグループリーダーを持つ場合に使用されます。

See also group_leader/0. 

一部Elixir-specific documentationもあります:

は、プロセスとIOデバイスをモデル化することにより、ErlangのVMは、同じネットワーク内の異なるノードは、中/書き込みファイルを読み込むために、ファイルのプロセスを交換することができますノード間。すべてのIOデバイスのうち、各プロセスに特化したものがあります:グループリーダー。

グループリーダーはプロセスごとに構成でき、さまざまな状況で使用されます。たとえば、リモート端末でコードを実行する場合、リモートノード内のメッセージは、要求をトリガした端末にリダイレクトされて出力されることが保証されます。

+0

まずはお返事ありがとうございます。私が理解できないことは、グループリーダーの主な仕事は何ですか? –

+1

グループリーダーの主なタスクは、グループ内のすべてのプロセスからI/O出力を収集し、そのI/Oを基になるシステムとの間でやりとりすることです。基本的に、グループリーダーは、グループに代わってstdin、stdout、stderrを所有し、そのようなチャネルとの間で情報をやり取りします。 –

+1

グループリーダーをプロキシとして考えると、他のプロセスがそのIOを実行します。そのため、会計部門と話し合っているグループの開発者の代わりに、(最後の会議の費用を整理するために)話し合っているグループリーダーを任命し、彼らはコードをハックし続けることができます。 – Amiramix

関連する問題