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):
- 하드웨어나 소프트웨어 이벤트가 발생했을 때 현재 작업을 중단하고, 즉시 처리하는 메커니즘
- 실시간 처리나 긴급한 상황에 사용
이처럼, 콜백은 보통 "이벤트가 발생하면 미리 등록된 함수가 호출된다"는 개념이고, 인터럽트는 "긴급 상황이 발생하면 현재 작업을 중단하고 바로 처리한다"는 개념으로 이해하면 된다.