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

Erlang 프로세스

Erlang에서의 병렬성 단위는 프로세스입니다. 프로세스는 다른 프로세스와 동시에 실행되고, 다른 프로세스에 독립적으로 실행되는 활동입니다/작업. Erlang에서 이러한 프로세스는 많은 사람들이 잘 알고 있는 프로세스와 스레드와 다릅니다. Erlang 프로세스는 가볍고, 다른 프로세스(메모리)와 분리되어 실행되며, Erlang의 가상 기계(VM)에 의해 스케줄링됩니다. 프로세스 생성 시간은 매우 짧고, 생성된 프로세스의 메모리 사용량은 매우 적습니다. 하나의 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 중 하나로, 호출 프로세스의 pid를 반환합니다.

6

register

시스템에서 프로세스를 등록합니다。

7

whereis

이는 whereis (Name)라고 불립니다. 이 이름으로 등록된 프로세스의 pid를 반환합니다.

8

unregister

시스템에서 프로세스를 해제합니다。