English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlangでの並行の粒度はプロセスです。プロセスは他のプロセスと同時に実行され、他のプロセスに依存しない独立した活動です。/タスク。Erlangでのこれらのプロセスは、多くの人々が馴染みのあるプロセスやスレッドとは異なります。Erlangプロセスは軽量で、他のプロセス(メモリ)と分離して動作し、Erlangの仮想マシン(VM)によってスケジューリングされます。プロセスの作成時間は非常に短く、生成されたばかりのプロセスのメモリ使用量は非常に小さいため、1つのErlang VMは数百万のプロセスを動作させることができます。
spawnメソッドを使用してプロセスを作成します。このメソッドの一般的な構文は以下の通りです。
spawn(Module, Name, Args)
Module −これは事前定義のアトミック値で、?MODULEでなければなりません。
Name −これはプロセスを定義する際に呼び出す関数の名前です。
Args −これらは関数に送信する必要のあるパラメータです。
新しく作成されたプロセスのプロセス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 パラメータを使用して call 関数を呼び出します。
出力結果
上記のプログラムを実行すると、以下のような結果が得られます。
<0.29.0>"hello" "process"
今、プロセスが利用できるその他の機能を見てみましょう。
序号 | 方法と説明 |
---|---|
1 | このメソッドは、プロセス id が存在するかどうかを確認するために使用されます。 |
2 | これが is_process_alive(Pid) と呼ばれます。Pid はローカルノード上のプロセスを参照する必要があります。 |
3 | これが pid_to_list と呼ばれます。プロセス id をリストに変換します。 |
4 | すべての登録されたプロセスの名前を含むリストを返します。 |
5 | 最もよく使用される BIF の 1 つで、呼び出しプロセスの pid を返します。 |
6 | システム内にプロセスを登録するために使用されます。 |
7 | これが whereis (Name) と呼ばれます。指定された名前で登録されたプロセスの pid を返します。 |
8 | システム内のプロセスを注销するために使用されます。 |