Erlang-processes
提供:Dev Guides
アーラン-プロセス
Erlangの並行性の粒度はプロセスです。 プロセスは、他のプロセスと同時に実行され、他のプロセスから独立しているアクティビティ/タスクです。 Erlangのこれらのプロセスは、ほとんどの人が使い慣れているプロセスやスレッドとは異なります。 Erlangプロセスは軽量で、他のプロセスから(メモリ)分離で動作し、Erlangの仮想マシン(VM)によってスケジュールされます。 プロセスの作成時間は非常に短く、生成されたばかりのプロセスのメモリフットプリントは非常に小さく、1つのErlang VMで何百万ものプロセスを実行できます。
プロセスは、spawnメソッドの助けを借りて作成されます。 メソッドの一般的な構文は次のとおりです。
構文
spawn(Module, Name, Args)
パラメーター
- モジュール-これは事前定義されたアトム値で、?MODULEでなければなりません。
- 名前-これは、プロセスが定義されたときに呼び出される関数の名前です。
- 引数-これらは、関数に送信する必要がある引数です。
戻り値
作成された新しいプロセスのプロセスIDを返します。
例えば
spawnメソッドの例を次のプログラムに示します。
-module(helloworld).
-export([start/0, call/2]).
call(Arg1, Arg2) ->
io:format("~p ~p~n", [Arg1, Arg2]).
start() ->
Pid = spawn(?MODULE, call, ["hello", "process"]),
io:fwrite("~p",[Pid]).
上記のプログラムについて、次のことに注意する必要があります。
- callという関数が定義されており、プロセスの作成に使用されます。
- spawnメソッドは、パラメーターhelloおよびprocessを使用して呼び出し関数を呼び出します。
出力
上記のプログラムを実行すると、次の結果が得られます。
<0.29.0>"hello" "process"
次に、プロセスで利用可能な他の機能を見てみましょう。
Sr.No. | Methods & Description |
---|---|
1 |
このメソッドは、プロセスIDが存在するかどうかを判断するために使用されます。 |
2 |
これはis_process_alive(Pid)と呼ばれます。 Pidは、ローカルノードのプロセスを参照する必要があります。 |
3 |
プロセスIDをリストに変換します。 |
4 |
登録されているすべてのプロセスの名前のリストを返します。 |
5 |
最もよく使用されるBIFの1つで、呼び出しプロセスのpidを返します。 |
6 |
これは、システムにプロセスを登録するために使用されます。 |
7 |
whereis(Name)と呼ばれます。 名前で登録されているプロセスのpidを返します。 |
8 |
これは、システムでプロセスを登録解除するために使用されます。 |