5주차_참고 : 콜백(Callback)과 인터럽트(Interrupt) - dhryu60/SmartDevice_2025-1 GitHub Wiki

콜백(Callback)과 인터럽트(Interrupt) 쉽게 이해하기


1. 콜백(Callback) 및 콜백 메서드

  • **콜백(Callback)**이란?

    • 정의:
      어떤 이벤트가 발생했을 때 자동으로 실행되는 함수 또는 메서드이다.
    • 쉽게 말해:
      "누군가(또는 무언가)가 어떤 일이 발생했을 때 나에게 '이거 해줘!'라고 알려주면, 내가 미리 준비해둔 함수를 실행하는 것"과 같다.
    • 예시:
      • 버튼을 눌렀을 때 LED를 켜는 함수
      • BLE 특성에 데이터가 쓰여졌을 때 데이터를 처리하는 함수
  • 콜백 메서드:

    • 정의:
      클래스 내에서 이벤트 발생 시 호출되도록 미리 정의한 함수이다.
    • 역할:
      특정 사건(예: 데이터 수신, 버튼 누름 등)이 발생했을 때, 자동으로 호출되어 해당 사건에 맞는 작업을 수행한다.
    • 사용 방법:
      • 다른 함수에 함수 포인터나 객체를 인수로 넘겨서, 나중에 이벤트가 발생했을 때 호출하게 한다.
      • 예를 들어, BLE 특성에 값을 쓸 때 호출되는 onWrite() 메서드가 있다.

2. 인터럽트(Interrupt)

  • 인터럽트(Interrupt)란?

    • 정의:
      하드웨어(또는 소프트웨어)에서 발생하는 긴급한 사건이 발생했을 때, 현재 실행 중인 작업을 중단하고, 즉시 처리할 작업(인터럽트 핸들러)를 실행하는 메커니즘이다.
    • 쉽게 말해:
      "집중해서 공부하던 중에 누군가 문을 두드려서 잠깐 멈추고 문을 열어보는 것"과 같다.
  • 특징:

    • 비동기적:
      언제든지 예기치 않게 발생하며, 즉시 실행된다.
    • 우선순위:
      중요한 사건일수록 높은 우선순위를 가지고 현재 작업을 중단하고 처리한다.
    • 예시:
      • 타이머 인터럽트: 일정 시간마다 발생하여 시계를 갱신
      • 외부 신호 인터럽트: 버튼을 누르거나 센서에서 신호가 오면 실행

3. 콜백과 인터럽트의 비교

개념 콜백(Callback) 인터럽트(Interrupt)
발생 시점 소프트웨어 이벤트에 의해 호출됨 하드웨어(또는 소프트웨어) 이벤트에 의해 즉시 호출됨
처리 방식 미리 등록된 함수를 호출하여 작업 수행 현재 작업을 중단하고, 인터럽트 핸들러에서 처리 후 복귀
용도 이벤트 기반의 일반적인 동작 처리 긴급하거나 실시간 처리가 필요한 작업
예시 BLE 데이터 수신 시 onWrite() 메서드 호출 타이머, 버튼 입력 등 하드웨어 신호에 따른 처리

4. 요약

  • 콜백(Callback):

    • 미리 정의한 함수가 특정 이벤트 발생 시 자동으로 호출되는 기능
    • 주로 소프트웨어에서 이벤트 처리를 위해 사용
  • 인터럽트(Interrupt):

    • 하드웨어나 소프트웨어 이벤트가 발생했을 때 현재 작업을 중단하고, 즉시 처리하는 메커니즘
    • 실시간 처리나 긴급한 상황에 사용

이처럼, 콜백은 보통 "이벤트가 발생하면 미리 등록된 함수가 호출된다"는 개념이고, 인터럽트는 "긴급 상황이 발생하면 현재 작업을 중단하고 바로 처리한다"는 개념으로 이해하면 된다.