이벤트 드리븐

jelly·2025년 3월 13일

이벤트 드리븐(Event-Driven) 이란?
이벤트 드리븐(Event-Driven, 이벤트 기반)은 특정 이벤트(사건, 변화)가 발생했을 때 실행되는 방식을 의미합니다.

✅ 즉, 프로그램의 흐름이 "이벤트"에 의해 결정되는 방식을 말합니다.
이벤트(사용자 입력, 네트워크 데이터, UI 클릭 등)가 발생하면 미리 등록된 핸들러(Listener, Callback)가 실행됨
✅ 반응형(React) 프로그래밍의 핵심 개념으로, UI, 게임, 네트워크, 멀티스레드 환경에서 자주 사용됨

  1. 이벤트 드리븐 프로그래밍의 핵심 개념
    (1) 이벤트(Event)
    사용자의 입력(키보드, 마우스 클릭)
    네트워크 데이터 수신
    시간 경과(Timer)
    게임 내 객체 상태 변화(몬스터 사망, 체력 감소 등)
    (2) 이벤트 리스너(Event Listener, Observer)
    이벤트를 감지하는 역할을 하는 객체
    특정 이벤트가 발생하면, 등록된 핸들러(Callback)가 실행됨
    (3) 이벤트 핸들러(Event Handler, Callback)
    이벤트가 발생했을 때 실행되는 함수
  2. 이벤트 드리븐 방식 vs 전통적인 방식
    (1) 전통적인 방식 (절차적 프로그래밍)
    "반복문과 조건문을 사용해 특정 상태를 지속적으로 확인(폴링, Polling)"
while (true)
{
    if (buttonPressed) // 버튼이 눌렸는지 계속 검사
    {
        ExecuteAction();
    }
}

⚠ 비효율적인 점:

매 프레임 if 문을 실행하므로 CPU 리소스 낭비
비동기적인 이벤트 처리 어려움 (네트워크, UI, AI 등)
(2) 이벤트 드리븐 방식
"이벤트가 발생했을 때만 실행 (콜백 함수 사용)"

void OnButtonPressed()
{
    ExecuteAction(); // 버튼이 눌렸을 때만 실행
}

// 이벤트 시스템에서 버튼이 눌리면 자동으로 OnButtonPressed 호출
Button.OnClick.AddDynamic(this, &MyClass::OnButtonPressed);

✅ 효율적인 점:

이벤트가 발생할 때만 실행 → 불필요한 연산 최소화
네트워크 응답, UI 이벤트, AI 상태 변화 등을 자연스럽게 처리 가능
비동기 이벤트 처리 가능 → UI 및 게임 시스템과 잘 맞음
3. 이벤트 드리븐 프로그래밍의 장점
장점 설명
성능 최적화 이벤트 발생 시에만 코드 실행 (폴링 방식보다 효율적)
코드 구조 개선 관심사 분리, 모듈화된 설계 가능 (클래스 간 결합도 낮춤)
비동기 처리 용이 UI, 네트워크, AI, 멀티플레이어 처리에 유리
확장성 증가 새로운 이벤트를 쉽게 추가 가능 (Observer 패턴 활용)

profile
jelly

0개의 댓글