English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang プロセス

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

is_pid

このメソッドは、プロセス id が存在するかどうかを確認するために使用されます。

2

is_process_alive

これが is_process_alive(Pid) と呼ばれます。Pid はローカルノード上のプロセスを参照する必要があります。

3

pid_to_list

これが pid_to_list と呼ばれます。プロセス id をリストに変換します。

4

registered

すべての登録されたプロセスの名前を含むリストを返します。

5

self

最もよく使用される BIF の 1 つで、呼び出しプロセスの pid を返します。

6

register

システム内にプロセスを登録するために使用されます。

7

whereis

これが whereis (Name) と呼ばれます。指定された名前で登録されたプロセスの pid を返します。

8

unregister

システム内のプロセスを注销するために使用されます。