이벤트 기반 프로그래밍

By | March 14, 2015

이벤트 기반 프로그래밍은 프로그래밍 패러다임 중 하나로 프로그램의 흐름이 특정 이벤트에 따라 결정되는 것을 말한다.

위 두 코드 중 아래의 코드가 이벤트 기반 프로그래밍이다. 첫번째것은 수행할 작업을 배치해 놓고 배치 순서대로 실행하고 프로그램을 종료한다. 아래의 코드는 무한 루프를 돌면서 사용자의 키입력을 기다리고 키입력에 따라 특정 작업을 수행한다. 두 코드의 가장 차이점은 무한 루프가 있다는 것이다. 이 무한 루프의 역할은 이벤트가 발생할 때까지 프로그램이 죽지 않게 살려두는 것이다. 이 루프를 메인 루프라고 할 때, 대부분의 이벤트 기반 프로그램들은 이러한 메인 루프를 가지고 있다. 메인 루프에서 이벤트를 기다리고 특정 이벤트가 발생했을 때 그 이벤트에 따른 콜백을 호출하는 식이다. 그래서 이벤트 기반 프로그램은 대부분 아래 그림과 같은 구조를 가지고 있다.

출처 : http://eventdrivenpgm.sourceforge.net/

출처 : http://eventdrivenpgm.sourceforge.net/

위의 그림대로 위에서 작성한 코드를 다시 작성해 보면 아래와 같다.

이러한 이벤트 기반 프로그래밍은 GUI 프로그램과 웹프로그램 등에서 쓰이며 하드웨어에서는 인터럽트 처리 등에 쓰인다.

iOS, Android 등의 모바일 프로그래밍도 모두 이벤트 기반 프로그래밍이다. 따라서 각 프레임워크에서 이벤트를 기다리는 메인 루프가 무엇이며 이벤트의 디스패치(이벤트 전달)는 어떻게 이뤄지는지 아는 것은 필수다. iOS의 프레임워크인 Cocoa Touch 는 NSRunLoop 가 이벤트 수신을 기다리는 메인 루프를 담당하며 안드로이드에서는 메인스레드에서의 루퍼가 담당한다.

Share on FacebookTweet about this on TwitterShare on Google+Share on RedditEmail this to someone