🔴 Erlang 프로세스 생성 및 관리 문법

Erlang 문법

초급 난이도
문법 타입
10/28 등록일

Erlang 프로세스 생성 및 관리 문법

초급
태그
기초 문법 입문 프로세스 분산
## 개요
Erlang은 분산 시스템에서 경량 프로세스를 통해 동시성 처리를 효율적으로 지원합니다. 이 문법은 프로세스 생성, 메시지 전송 및 관리를 위한 핵심 기능을 제공하며, 시스템의 확장성과 안정성을 높입니다.

## 주요 특징
- 경량 프로세스 생성 및 병렬 처리
- 메시지 중심의 통신 방식 (send/receive)
- 감독 트리(OTP) 기반의 자동 재시도 메커니즘
- 비동기적 작업 처리 가능

## 사용법
```erlang
% 프로세스 생성 및 메시지 전송 예제
spawn(fun() ->
receive
{hello, Name} ->
io:format("안녕! ~p~n", [Name])
end
end),

self() ! {hello, "Alice"}.
```

- `spawn/1` 함수로 새로운 프로세스 생성
- `receive` 구문으로 메시지 수신 처리
- `!` 연산자로 비동기 메시지 전송

## 주의사항
- 메시지 대기 시 `receive` 구문에 타임아웃 처리 필수 (예: `receive after 5000 -> ... end`
- 프로세스 오류 시 감독 트리와 `gen_server`를 활용해 자동 재시도 필요
- 무한 루프일 경우 `process_flag(trap_exit, true)` 설정으로 정상 종료 처리

## 관련 문법
- 메시지 전송: `!` 연산자 및 `receive`
- 감독 트리: `supervisor`, `gen_server`
- 프로세스 식별: `self()`, `pid()`
코드 예제
%% 프로세스 생성 및 메시지 처리 예제
-module(process_demo).
-export([start/0]).

start() ->
    Pid = spawn(fun() ->
        receive
            {greet, Name} ->
                io:format("안녕하세요 ~p님!~n", [Name]);
            stop ->
                io:format("프로세스 종료됨.~n")
        end
    end),
    Pid ! {greet, "Erlang"},
    Pid ! stop.
등록일: 2025년 10월 28일 02:33
언어 정보
언어
Erlang
카테고리
Functional
인기도
#28
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요