logo

프로그래밍에서의 이벤트

Computer Scienece · 11월 2일 · 17 min read
poster

프로그래밍 및 소프트웨어 설계에서 이벤트는 소프트웨어에 의해 인식되는 동작 또는 이벤트를 의미하며, 종종 외부 환경에서 비동기적으로 발생하여 소프트웨어에 의해 처리될 수 있다. 컴퓨터 이벤트는 시스템, 사용자 또는 기타 방식으로 생성되거나 트리거될 수 있다. 일반적으로 이벤트는 프로그램 흐름과 동기화되어 처리된다. 즉, 소프트웨어에는 이벤트가 처리되는 전용 장소가 하나 이상 있으며, 이벤트 루프가 자주 발생한다.

이벤트 발생원으로는 예를 들어 키보드 입력이나 네트워크 요청 등 컴퓨터 주변기기를 통해 소프트웨어와 상호 작용하는 사용자를 들 수 있다. 또한 타이머와 같은 하드웨어 장치도 이벤트의 원천이 될 수 있다. 소프트웨어는 또한 작업 완료를 알리는 등 자체적인 이벤트 세트를 이벤트 루프에 트리거할 수도 있다. 이벤트에 따라 동작을 변경하는 소프트웨어를 이벤트 구동형이라고 하며, 종종 상호작용을 목적으로 한다.

설명

이벤트 기반 시스템은 일반적으로 프로그램에서 처리해야 하는 비동기식 외부 활동이 있을 때 사용된다. 이벤트 기반 시스템은 일반적으로 이벤트 루프를 실행하고 장치로부터의 입력이나 내부 알람과 같은 활동을 계속 기다린다. 이 중 하나라도 발생하면 이벤트에 대한 데이터를 수집하고 해당 이벤트를 처리할 이벤트 핸들러 소프트웨어에 이벤트를 전송한다.

프로그램은 이벤트를 무시할 수도 있고, 특정 이벤트를 수신하도록 프로그래밍된 여러 핸들러에 이벤트를 발송하는 라이브러리가 있을 수도 있다. 이벤트와 관련된 데이터는 최소한 어떤 유형의 이벤트인지 식별하지만, 언제 발생했는지, 누가, 무엇을 일으켰는지, 이벤트 소스에서 핸들러에 제공된 추가 데이터와 같이 이벤트가 어떻게 처리되어야 하는지에 대한 다른 정보를 포함할 수 있다. 를 포함할 수 있다.

이벤트는 일반적으로 사용자 인터페이스에서 사용되며, 외부 세계의 동작(마우스 클릭, 창 크기 변경, 키보드 누르기, 다른 프로그램의 메시지 등)은 프로그램에서 일련의 이벤트로 처리된다. 많은 윈도우 환경용으로 작성된 프로그램은 주로 이벤트 핸들러로 구성되어 있다.

이벤트는 인터럽트를 보완하는 명령어 세트 수준에서도 사용할 수 있습니다. 인터럽트와 비교할 때 이벤트는 일반적으로 동기식으로 구현됩니다. 인터럽트가 즉각적인 서비스를 요청할 수 있는 반면, 프로그램은 이벤트가 생성되고 처리될 때까지 명시적으로 기다린다(일반적으로 다음 이벤트를 디스패치하는 명령어를 호출한다).

사용자 생성 이벤트

프로그램이나 시스템이 생성하거나 응답하는 상황이나 이벤트는 매우 다양하다. 일반적인 사용자 생성 이벤트에는 다음과 같은 것들이 있다:

마우스 이벤트

마우스 이벤트 포인팅 장치는 소프트웨어가 인식할 수 있는 포인팅 장치 제스처를 생성할 수 있다. 마우스는 마우스 이동(이동 방향 및 거리 포함), 마우스 왼쪽/오른쪽 버튼의 위/아래, 마우스 휠의 움직임 또는 이러한 제스처의 조합과 같은 많은 마우스 이벤트를 생성할 수 있습니다. 예를 들어, 더블 클릭은 일반적으로 단어 또는 경계 내의 문자를 선택하고, 트리플 클릭은 전체 단락을 선택합니다.

키보드 이벤트

키보드 키를 누르거나 키 조합을 누르면 키보드 이벤트가 발생하여 현재 실행 중인 프로그램이 사용자가 어떤 키를 눌렀는지와 같은 도입 데이터에 응답할 수 있도록 한다.

조이스틱 이벤트

조이스틱을 움직이면 X-Y 아날로그 신호가 발생한다. 조이스틱에는 종종 이벤트를 트리거하기 위한 여러 개의 버튼이 있다. 인기 있는 게임기 게임패드에는 조이스틱을 사용하는 게임패드가 있다.

터치스크린 이벤트

터치스크린을 사용하여 발생하는 이벤트를 일반적으로 터치 이벤트 또는 제스처라고 합니다.

디바이스 이벤트

디바이스 이벤트에는 흔들기, 기울이기, 회전, 이동 등 디바이스에 의한 또는 디바이스에 대한 동작이 포함된다.

이벤트 핸들러

컴퓨터 프로그래밍에서 이벤트 핸들러는 프로그램에서 받은 입력을 처리하는 콜백 서브 루틴(자바나 자바스크립트에서는 리스너라고 부른다)을 사용하여 구현될 수 있다. 각 이벤트는 기본 프레임워크(일반적으로 GUI 툴킷)의 애플리케이션 수준 정보의 일부이며, GUI 이벤트에는 키 누르기, 마우스 이동, 동작 선택, 타이머 시간 만료 등이 포함된다. 더 낮은 수준에서 이벤트는 파일이나 네트워크 스트림을 읽을 수 있는 새로운 데이터의 가용성을 나타낼 수 있다. 이벤트 핸들러는 이벤트 기반 프로그래밍의 핵심 개념이다.

이벤트는 하위 레벨의 입력 해석을 기반으로 프레임워크에 의해 생성된다. 예를 들어, 마우스의 움직임이나 클릭은 메뉴 선택으로 해석된다. 이벤트는 처음에는 하드웨어 장치에 의해 생성된 인터럽트, 소프트웨어 인터럽트 명령, 폴링 상태 변경과 같은 운영 체제 수준의 동작에서 발생한다. 이 수준에서 인터럽트 핸들러와 신호 핸들러는 이벤트 핸들러에 해당한다.

생성된 이벤트는 먼저 프레임워크 내 이벤트 디스패처에 의해 처리된다. 이벤트 디스패처는 일반적으로 이벤트와 이벤트 핸들러의 연결을 관리하고, 이벤트 핸들러와 이벤트를 나중에 처리할 수 있도록 대기열에 넣을 수 있다. 이벤트 디스패처는 이벤트 핸들러를 직접 호출할 수도 있고, 실행될 핸들러에 대한 정보를 가진 이벤트가 대기열에 대기할 수도 있다.

관련 포스트