이벤트 (컴퓨팅)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
이벤트(컴퓨팅)는 특정 상황 발생에 대한 알림 또는 신호로, 프로그램의 동작을 제어하는 데 사용되는 개념이다. 이벤트 드리븐 방식은 이벤트에 따라 메서드 실행이나 컨텍스트 전환을 수행하며, GUI 프로그래밍에서 이벤트 루프를 통해 사용자 입력을 처리한다. 이벤트 기반 시스템은 비동기적 외부 활동을 처리하며, 이벤트 핸들러는 이러한 이벤트에 반응하는 콜백 서브루틴이다. 이벤트는 사용자 인터페이스, 분산 시스템, 그리고 C#과 같은 언어의 delegate 이벤트 모델, DOM 이벤트, 윈도우 API의 Win32 이벤트 등 다양한 형태로 구현된다.
더 읽어볼만한 페이지
- 이벤트 (컴퓨팅) - 메시지 큐
메시지 큐는 프로세스나 스레드 간 비동기 통신을 제공하여 송신자와 수신자가 동시에 상호 작용할 필요 없이 메시지를 교환하도록 하며, 메시지는 수신자가 검색할 때까지 저장되고 시스템 장애 시 복원력을 제공하지만 보안 취약점, 특정 기업 종속성 등의 논란도 존재한다. - 이벤트 (컴퓨팅) - 비동기 입출력
비동기 입출력은 입출력 완료를 기다리지 않고 다른 작업을 처리하는 방식으로, 완료 시 콜백이나 시그널을 통해 결과를 알려주어 효율적인 자원 활용과 성능 향상을 가져다준다. - 함수 (프로그래밍) - 사용자 정의 함수
사용자 정의 함수는 프로그래밍 언어와 데이터베이스 시스템에서 사용자가 직접 정의하여 재사용할 수 있는 코드 블록이다. - 함수 (프로그래밍) - 코루틴
코루틴은 실행을 멈췄다가 다시 시작할 수 있는 서브루틴의 특별한 형태로, 로컬 데이터를 보존하며 다양한 방식으로 구현되고 여러 프로그래밍 상황에서 유용하게 쓰인다. - 컴퓨터 프로그래밍 - 순서도
순서도는 컴퓨터 알고리즘이나 프로세스를 시각적으로 표현하는 도구로, 흐름 공정 차트에서 기원하여 컴퓨터 프로그래밍 분야에서 알고리즘을 설명하는 데 사용되며, 다양한 종류와 소프트웨어 도구가 존재한다. - 컴퓨터 프로그래밍 - 의사코드
의사코드는 컴퓨터 과학 및 수치 계산 분야에서 알고리즘을 설명하기 위해 사용되는 비표준적인 언어로, 자연어와 프로그래밍 언어의 요소를 혼합하여 알고리즘의 논리적 흐름을 이해하기 쉽게 하고 프로그래머가 실제 코드로 구현하기 전에 알고리즘을 설계하고 검토하는 데 유용하다.
이벤트 (컴퓨팅) | |
---|---|
컴퓨팅 이벤트 | |
정의 | 컴퓨팅 시스템 또는 네트워크에서 발생하는 중요한 사건 |
특징 | 시스템 상태 변경 오류 발생 사용자 상호 작용 |
사용 예시 | 웹 페이지 로드 완료 데이터베이스 연결 실패 마우스 클릭 |
프로그래밍에서의 이벤트 | |
정의 | 프로그램의 흐름을 변경시키는 사건 |
예시 | 버튼 클릭 키보드 입력 타이머 종료 |
이벤트 처리기 | 이벤트 발생 시 실행되는 코드 블록 |
추가 정보 | |
관련 개념 | 인터럽트 예외 처리 이벤트 루프 |
2. 이벤트 드리븐
이벤트 드리븐(이벤트 구동형, event-driven영어)은 이벤트에 따라 선택적으로 인스턴스에 대한 처리 (메서드 실행) 또는 컨텍스트 전환을 수행하는 방식이다. 키보드의 키를 누르거나 마우스의 버튼을 클릭하는 것과 같은 액션이 발생하면, 이벤트 신호가 부가 정보(키 종류, 버튼 종류 등)와 함께 발신된다. 이처럼 액션을 기폭제로 하여 다른 프로그램 코드가 작동하도록 프로그래밍하는 것을 이벤트 구동형 프로그래밍이라고 한다.
Java에서는 이벤트 리스너 인터페이스를 구현하는 커스텀 파생 클래스에서 메서드오버라이드를 이용하여 콜백 처리를 커스터마이즈한다. C#과 같이 이벤트를 언어 사양으로 포함하는 프로그래밍 언어에서는 특정 액션이 발생했을 때 호출되는 이벤트 핸들러를 간결하게 기술하고 등록할 수 있다.
2. 1. 이벤트 루프
일반적으로 GUI 애플리케이션 소프트웨어 프로그래밍에서는 이벤트 발생을 감시하면서 대기하는 이벤트 루프(메시지 루프)에서, 운영체제로부터 받은 이벤트(메시지) 객체를 미리 등록된 콜백 함수에 디스패치(배송)하여 이벤트에 따른 사용자 처리(이벤트 핸들러)를 실행하고, 다시 이벤트 루프로 돌아가는 폴링적인 수법이 사용된다.등록되는 콜백 함수는 각각 인터페이스가 정해져 있으며, 프로그래머는 인터페이스를 제외하고 이 함수의 내용을 자유롭게 기술함으로써 이벤트를 처리할 수 있다.
3. 이벤트 기반 시스템
이벤트 기반 시스템은 비동기적인 외부 활동을 처리하기 위해 이벤트 루프를 실행하여 장치로부터의 입력이나 내부 알람을 기다린다. 활동이 발생하면 시스템은 관련 데이터를 수집하고, ''이벤트 핸들러''로 전달한다.
프로그램은 이벤트를 무시하거나, 여러 핸들러에 동시에 보낼 수 있다. 이벤트 데이터는 최소한 이벤트 유형을 나타내며, 발생 시기, 원인 등의 추가 정보를 포함할 수 있다.
이벤트는 주로 사용자 인터페이스에서 사용되며, 윈도 환경 프로그램은 대부분 이벤트 핸들러로 구성된다. 명령어 집합 수준에서 인터럽트를 보완하기도 하며, 인터럽트와 달리 동기화된 환경에서 처리된다.
3. 1. 설명
일반적으로 이벤트 기반 시스템은 프로그램에서 처리해야 할 비동기 외부 활동이 있을 때 사용된다. 사용자가 마우스 버튼을 클릭하는 것을 예로 들 수 있다. 이벤트 기반 시스템은 보통 이벤트 루프의 형태로 동작한다. 이벤트 루프는 평소에 장치로부터 입력이나 내부 경보를 계속해서 기다리고 있다가, 이와 같은 활동이 발생하면 이벤트를 생성시킨다. 이벤트 기반 시스템은 발생한 이벤트에 대해 언제, 어디서, 어떤 이벤트가 발생했는지 따위의 데이터를 수집하고, 이 데이터를 필요한 ''이벤트 핸들러''로 발송(dispatch)한다.프로그램은 이벤트를 선택적으로 무시할 수 있으며, 하나의 이벤트를 여러 개의 핸들러에 동시에 발송하게 할 수도 있다. 이벤트에 관련된 데이터는 최소한 어떤 형태의 이벤트인지 나타내기 위한 정보를 가지고 있고, 발생 시기 및 원인, 그리고 이벤트 ''소스''가 이벤트 핸들러로 제공하는 이벤트 처리 방법 등과 같은 추가 정보를 포함할 수도 있다.
이벤트는 일반적으로 마우스 클릭, 창 크기 조정, 키보드 누름, 다른 프로그램의 메시지 등과 같이 외부의 동작이 프로그램 내부에서 처리되는 사용자 인터페이스에서 주로 사용된다. 윈도 환경에서 작성된 대부분의 프로그램은 이런 이벤트 핸들러로 구성되어 있다.
이벤트는 인터럽트를 보완하기 위한 용도로 명령어 집합 레벨에서 사용될 수도 있다. 인터럽트와는 달리 이벤트는 동기화된 환경에서 처리된다. 프로그램에서는 보통 다음 이벤트를 발송(dispatch)하는 함수를 호출하는 식으로 이벤트가 제공될 때까지 기다리는 반면, 반면 인터럽트는 아무 때나 처리를 요구할 수 있다.
3. 2. 이벤트 진화 전략
분산 시스템에서 이벤트 진화는 여러 서비스에서 일관성이 없는 이벤트 스키마를 관리하고, 점진적인 시스템 업데이트 중에 호환성을 보장하는 것과 같은 과제를 제기한다. EDA의 이벤트 진화 전략은 시스템이 중단 없이 이벤트 변경 사항을 처리할 수 있도록 보장할 수 있다. 이러한 전략에는 하위 호환성 및 상위 호환성을 유지하기 위해 의미적 버전 관리 또는 스키마 진화와 같은 이벤트 버전 관리가 포함될 수 있다. 어댑터는 이전 형식과 새 형식 간에 이벤트를 변환하여 구성 요소 전체에서 일관된 처리를 보장할 수 있다. 이러한 기술을 통해 시스템은 복잡하고 분산된 환경에서 호환 가능하고 안정적으로 진화할 수 있다.[1]4. 이벤트 핸들러
이벤트 핸들러는 이벤트 구동형(event-driven) 방식에서 이벤트에 따라 선택적으로 인스턴스에 대한 처리(메서드 실행) 또는 컨텍스트 전환을 수행하는 것을 의미한다. 예를 들어 키보드의 키를 누르거나 마우스의 버튼을 클릭하는 등의 액션이 발생하면, 이벤트 신호가 부가 정보(키 종류나 버튼 종류 등의 데이터)와 함께 발신된다.
일반적으로 GUI애플리케이션 소프트웨어 프로그래밍에서는 이벤트 발생을 감시하면서 대기하는 이벤트 루프(메시지 루프)에서, 운영체제로부터 받은 이벤트(메시지) 객체를 미리 등록된 콜백함수에 디스패치(배송)하여 이벤트에 따른 사용자 처리(이벤트 핸들러)를 실행하고, 다시 이벤트 루프로 돌아가는 폴링 방식을 사용한다.
프로그래머는 인터페이스를 제외하고 이 함수의 내용을 자유롭게 기술함으로써 이벤트를 처리할 수 있다. 콜백 처리 등록은 주로 함수 포인터나 대리자 등을 사용하여 실현된다. Java에서는 콜백 처리를 커스터마이즈하기 위해 이벤트 리스너 인터페이스를 구현하는 커스텀 파생 클래스에서 메서드오버라이드를 이용한다. C#과 같은 일부 프로그래밍 언어에서는 특정 액션이 발생했을 경우 호출되는 이벤트 핸들러를 간결하게 기술·등록할 수 있도록 이벤트가 언어 사양에 포함되어 있다.
4. 1. 정의
컴퓨터 프로그래밍에서 '''이벤트 핸들러'''는 프로그램 내부에서 입력을 받아 처리하는 일종의 콜백 서브루틴이며, 자바 또는 자바 스크립트에서는 '''리스너'''라고도 불린다.[13][4] 각각의 이벤트는 주로 GUI 툴킷 등을 포함하는 기본 프레임워크에서 온 응용 프로그램 레벨의 정보로, 이러한 GUI 이벤트에는 키 누름, 마우스 움직임, 동작 선택 및 타이머 완료 등이 있다. 좀 더 하위의 이벤트는, 파일 또는 네트워크 스트림을 읽는 부분에서 데이터의 가용성을 나타내기 위해 사용될 수도 있다. 이벤트 핸들러는 이벤트 기반 프로그래밍(Event-driven programming)에서 가장 중요한 개념이다.이벤트는 궁극적으로 하위의 입력 신호를 해석하는 프레임워크에서 출발한다. 예를 들어 마우스로 메뉴를 선택하는 동작을 생각해 보자. 이 이벤트는 최초로 운영체제 수준에서 하드웨어 장치에서 발생한 인터럽트나 소프트웨어 인터럽트 명령으로부터 출발한다. 이 수준에서는 인터럽트 핸들러와 신호 핸들러가 이벤트 핸들러에 해당한다.
생성된 이벤트는 최초로 프레임워크 내의 이벤트 발송자에서 처리된다. 이벤트 발송자는 보통 이벤트와 이벤트 핸들러 사이를 맺어주는 역할을 하고, 다수의 이벤트나 이벤트 핸들러가 있을 경우, 그 선후 관계를 정리하기도 한다. 이벤트 발송자가 이벤트 핸들러를 직접 호출하기도 하고, 또는 이벤트가 자신이 수행될 이벤트 핸들러에 대한 정보를 가지고 오기를 기다리게 할 수도 있다.
4. 2. 이벤트 디스패처
생성된 이벤트는 먼저 프레임워크 내의 ''이벤트 디스패처''에 의해 처리된다. 이벤트 디스패처는 일반적으로 이벤트와 이벤트 처리기 간의 연관성을 관리하며, 이벤트 처리기 또는 이벤트를 나중에 처리하기 위해 대기열에 넣을 수 있다. 이벤트 디스패처는 이벤트 처리기를 직접 호출하거나 실행될 처리기에 대한 정보와 함께 이벤트를 대기열에서 제거될 때까지 기다릴 수 있다.[4]5. 이벤트 알림
이벤트 알림은 애플리케이션이 특정 조건을 감시하고, 이벤트에 의해 발생한 작업을 수행할 수 있도록 하는 기능이다.[5] 최신 데이터베이스 시스템, 운영 체제, 분산 시스템에서 중요한 역할을 한다. 게시-구독과 비슷한 의미로 사용되기도 하며, 가상 동기화 모델을 통해 시스템에 더 강력한 안정성과 일관성을 제공한다.
5. 1. 특징
이벤트 알림은 작은 메시지("이벤트")를 생성하는 애플리케이션을 관련 조건을 모니터링하고 이벤트에 의해 트리거된 작업을 수행할 수 있는 애플리케이션에 연결하기 위해 통신 소프트웨어와 함께 사용되는 용어이다.[5]이벤트 알림은 최신 데이터베이스 시스템(애플리케이션이 관찰하는 조건이 발생했을 때 이를 알리는 데 사용됨), 최신 운영 체제(창을 새로 고치는 것과 같은 일부 작업을 수행해야 할 때 애플리케이션에 알리는 데 사용됨) 및 이벤트의 생성자가 소비자와 다른 컴퓨터 또는 소비자일 수 있는 최신 분산 시스템에서 중요한 기능이다. 이벤트 알림 플랫폼은 일반적으로 이벤트를 생성하는 애플리케이션이 어떤 애플리케이션이 이벤트를 소비할지 또는 이벤트 스트림을 얼마나 많은 애플리케이션이 모니터링할지 알 필요가 없도록 설계되었다.
이벤트 알림은 때때로 게시-구독의 동의어로 사용되는데, 이는 네트워크 환경에서 이벤트 알림을 지원하는 한 종류의 제품과 관련이 있는 용어이다. 가상 동기화 모델은 이벤트 알림 시스템과 게시-구독 시스템에 더 강력한 내결함성 및 일관성 보장을 제공하기 위해 사용되기도 한다.
6. 사용자 생성 이벤트
사용자 생성 이벤트는 사용자가 컴퓨터나 스마트폰 등 전자기기와 상호작용할 때 발생하는 이벤트들을 말한다. 사용자 생성 이벤트의 종류는 다음과 같다.
- 마우스 이벤트: 마우스를 움직이거나 버튼을 클릭할 때 발생한다.
- 키보드 이벤트: 키보드의 키를 누르거나 뗄 때 발생한다.
- 조이스틱 이벤트: 조이스틱을 움직이거나 버튼을 누를 때 발생한다.
- 터치스크린 이벤트: 터치스크린을 터치하거나 멀티터치 등의 동작을 할 때 발생한다.
- 장치 이벤트: 장치를 흔들거나 기울이는 등의 동작을 할 때 발생한다.
6. 1. 마우스 이벤트
포인팅 디바이스인 마우스의 버튼을 클릭하면 "마우스 클릭" 이벤트가 발생한다. 프로그래머는 이 "마우스 클릭" 이벤트에 반응하는 코드를 작성한다. 일반적으로 마우스 이벤트는 마우스가 이동할 때(mouse move)와 마우스의 버튼을 누르거나(mouse down) 뗄 때(mouse up) 발생한다.[14]포인팅 장치는 여러 소프트웨어에서 인식 가능한 포인팅 장치 제스처를 만들 수 있다. 마우스는 마우스 이동(이동 방향 및 거리 포함), 마우스 왼쪽/오른쪽 버튼 누름/놓음[2] 및 마우스 휠 움직임, 또는 이러한 제스처의 조합과 같은 여러 가지 마우스 이벤트를 만들 수 있다. 예를 들어, 더블 클릭은 일반적으로 경계 내의 단어와 문자를 선택하고, 트리플 클릭은 전체 단락을 선택한다.
6. 2. 키보드 이벤트
키보드에서 키를 누르거나 키 조합을 누르면 키보드 이벤트가 생성되어 현재 실행 중인 프로그램이 입력된 데이터에 응답할 수 있다.[2] 사용자가 키보드의 키를 누르면 현재 실행 중인 프로그램은 사용자가 누른 키와 관련된 데이터와 함께 "KeyDown" 이벤트를 받는다.[14]6. 3. 조이스틱 이벤트
조이스틱을 움직이면 X-Y 아날로그 신호가 발생한다. 이벤트를 출력하는 여러 버튼을 가지고 있기도 하다. 대중적인 게임 박스를 위한 일부 게임패드는 조이스틱을 사용한다.[1]6. 4. 터치스크린 이벤트
터치스크린을 사용하여 생성되는 이벤트는 일반적으로 터치 이벤트 또는 제스처 인식이라고 한다.6. 5. 장치 이벤트
장치는 흔들림, 기울임, 회전, 이동과 같은 동작을 포함한다.[1]7. Delegate 이벤트 모델
객체 지향 프로그래밍에서 흔히 사용되는 변형은 일부 GUI에서 제공하는 위임 이벤트 모델이다. 이 모델은 컨트롤(이벤트 소스), 리스너(이벤트 핸들러), 인터페이스(프로토콜)의 세 가지 개체를 기반으로 한다. C#과 Java 같은 프로그래밍 언어들은 위임 이벤트 모델을 활용한다. C#은 이벤트를 자체 선언된 클래스에서만 발생될 수 있는 특수 위임으로 사용하며, 이는 더 나은 추상화를 가능하게 한다.[3]
이벤트 드리븐(이벤트 구동형, event-driven영어)은 이벤트에 따라 선택적으로 인스턴스에 대한 처리(메서드 실행) 또는 컨텍스트 전환을 수행하는 방식이다. 예를 들어, 키보드의 키를 누르거나 마우스의 버튼을 클릭하는 등의 액션이 발생하면, 이벤트 신호가 부가 정보와 함께 발신된다. 이러한 액션을 기폭제로 다른 프로그램 코드가 작동하도록 프로그래밍하는 것을 이벤트 구동형 프로그래밍이라고 한다.
일반적으로 GUI 애플리케이션 소프트웨어 프로그래밍에서는 이벤트 루프(메시지 루프)에서 이벤트 발생을 감시하며 대기한다. 운영체제로부터 받은 이벤트(메시지) 객체를 미리 등록된 콜백 함수에 디스패치(배송)하여 이벤트에 따른 사용자 처리(이벤트 핸들러)를 실행하고, 다시 이벤트 루프로 돌아가는 폴링적인 수법이 사용된다.
등록되는 콜백 함수는 각각 인터페이스가 정해져 있으며, 프로그래머는 인터페이스를 제외하고 이 함수의 내용을 자유롭게 기술함으로써 이벤트를 처리할 수 있다. 통상 콜백 처리의 등록은 함수 포인터나 대리자 등을 사용하여 실현된다.
7. 1. 구성 요소
객체 지향 프로그래밍에서 흔히 사용되는 위임 이벤트 모델은 그래픽 사용자 인터페이스에서 제공되며, 다음 세 가지 구성 요소로 이루어진다.- 컨트롤 (이벤트 소스): 이벤트를 발생시키는 주체이다. 예를 들어, 버튼 등이 있다.
- 리스너 (이벤트 핸들러): 리스너는 소스로부터 이벤트 알림을 받는 객체이다. 이벤트가 발생하면 특정 동작을 수행한다.
- 인터페이스 (프로토콜): 이벤트가 통신될 프로토콜을 정의한다.
이 모델에서는 다음 사항을 요구한다.
- 모든 리스너는 리스닝하려는 이벤트에 대한 인터페이스를 구현해야 한다.
- 모든 리스너는 이벤트 수신 의사를 선언하기 위해 소스에 등록해야 한다.
- 소스가 이벤트를 생성할 때마다 인터페이스의 프로토콜에 따라 등록된 리스너에게 이를 통신한다.
C#은 이벤트를 자체적으로 선언된 클래스에서만 발생될 수 있는 특수 위임으로 사용한다. 이는 더 나은 추상화를 허용한다.[3]
일반적으로 GUI애플리케이션 소프트웨어 프로그래밍에서는 이벤트 루프가 운영체제로부터 받은 이벤트 객체를 콜백함수에 디스패치하여 이벤트에 따른 사용자 처리(이벤트 핸들러)를 실행한다.
7. 2. C#에서의 Delegate 이벤트
C#은 이벤트를 자체적으로 선언된 클래스에서만 발생될 수 있는 특수 위임으로 사용한다. 이는 더 나은 추상화를 허용한다.[3] C#에서는 특정 액션이 발생했을 경우 호출되는 이벤트 핸들러를 간결하게 기술하고 등록할 수 있다.8. DOM Events
DOM 이벤트는 웹에서 발생하는 동작 및 사건을 의미한다.[8][9]
DOM 이벤트의 특징은 이벤트 전파가 DOM(웹 브라우저 처리 시스템)에 의해 처리된다는 점이다. 이벤트는 DOM 트리의 노드에 대해 발행되며, 트리의 루트를 향해 각 노드에서 처리되면서 전파된다. 이러한 전파는 모두 웹 브라우저에 의해 처리되며, 이 점에서 웹 브라우저는 이벤트(메시지) 처리를 위한 미들웨어로 작동한다고 볼 수 있다.
8. 1. 정의
DOM 이벤트는 웹에서 발생한 동작 및 사건이다.[8][9] 정확한 정의에 따르면 DOM에서 정의된 `Event` 인터페이스를 구현하는 객체를 '''이벤트'''라고 한다.[10]예를 들어 웹 브라우저가 발생시키는 `click` 이벤트나 `keydown` 이벤트가 있다. 또한 프로그래머가 임의로 발생시킬 수 있는 '''커스텀 이벤트'''(`CustomEvent` 인터페이스의 구현)도 존재한다.[11] 이러한 이벤트를 사용하면 마우스 클릭과 같은 동작, 네트워크 요청 완료와 같은 사건(이벤트)의 발생을 표현하고, 이벤트에 응답하는 행위를 정의할 수 있다.
8. 2. 특징
DOM 이벤트의 특징은 이벤트의 전파가 DOM(Document Object Model)에 의해 처리된다는 점이다.[8][9][10] 이벤트는 DOM 트리의 노드에 대해 발행되며, 트리의 루트를 향해 각 노드에서 처리되면서 전파된다. 이러한 전파는 모두 웹 브라우저에 의해 처리되며, 이 점에서 웹 브라우저는 이벤트(메시지) 처리를 위한 미들웨어로 작동한다고 볼 수 있다.[11]9. 排他制御におけるイベント (배타 제어에서의 이벤트)
Windows(Win32 이후)의 "이벤트"는 커널객체로, "Win32 이벤트"라고도 불린다.[12] 이는 이벤트 드리븐과는 관련이 없으며, 스레드를 재개시키거나 프로세스 간 통신 등에 사용된다. Win32 이벤트는 세마포어와 비슷하지만, 자원 수가 항상 1이고 시그널 발생 정보만 전달한다는 차이점이 있다.
9. 1. Win32 이벤트
Windows(Win32 이후)에는 "이벤트"라고 불리는 커널객체가 있으며, "Win32 이벤트"라고 불리기도 한다.[12] 이 객체는 이벤트 드리븐과는 아무런 관계가 없다. 이벤트 객체는 해당 객체가 시그널(발신)됨으로써 대기 상태에 있는 스레드를 재개시키는 등 대기 상태에 있는 어떠한 처리를 시작하는 목적으로 사용된다. 또한, 프로세스 간에 이벤트 객체를 공유할 수 있으므로, 스레드 간 통신뿐만 아니라 프로세스 간 통신에도 이용된다.Win32 이벤트는 이벤트적 사상을 전달하는 데 특화되어 있으며, 대기 중인 스레드가 이벤트 대기에서 해제될 때 자동으로 이벤트를 비 시그널 상태로 만드는 기능이 있다. 세마포어와 비슷하지만, 결정적인 차이점은 이벤트는 자원 수가 항상 1이며, 전달할 수 있는 정보는 시그널 발생뿐이라는 점이다.
이벤트는 각 API마다 다음과 같은 클래스 또는 함수를 통해 제공된다.
API | 클래스 또는 함수 |
---|---|
Windows API | CreateEvent() 함수(HANDLE 형 객체) |
ATL/MFC | CEvent 클래스 |
.NET Framework | System.Threading.AutoResetEvent 클래스, System.Threading.ManualResetEvent 클래스 |
참조
[1]
서적
Designing Event-Driven Systems
O'Reilly Media
[2]
웹사이트
Mouse and Keyboard Events in Windows Forms
http://msdn2.microso[...]
Microsoft
2008-02-12
[3]
웹사이트
Advanced C#: Variable Number of Parameters
http://ssw.jku.at/Te[...]
Institut für Systemsoftware, Johannes Kepler Universität Linz, Fachbereich Informatik
2002-03-25
[4]
웹사이트
EventTarget.addEventListener() - Web APIs
https://developer.mo[...]
2024-03-11
[5]
웹사이트
The event notification pattern
https://medium.com/g[...]
2021-05-24
[6]
문서
Microsoft Windows에서는, 윈도우마다 등록되는 콜백 함수의 것을 윈도우 프로시저 (window procedure) 라고 부른다.
[7]
웹사이트
이벤트드리ブン {{!}} じっくり学ぶ Java講座 [初心者向け・入門]
https://www.milk-isl[...]
2023-07-10
[8]
웹사이트
MDN web docs - 이벤트의 소개
https://developer.mo[...]
[9]
웹사이트
DOM Living Standard - 2.1. Introduction to "DOM Events"
https://dom.spec.wha[...]
[10]
웹사이트
DOM Living Standard - 2.2. Interface Event
https://dom.spec.wha[...]
[11]
웹사이트
MDN web docs - CustomEvent
https://developer.mo[...]
[12]
웹사이트
커널オブジェクト-win32 apps {{!}} Microsoft Learn
https://learn.micros[...]
2023-07-10
[13]
웹사이트
https://developer.mo[...]
[14]
웹사이트
Mouse and Keyboard Events in Windows Forms
http://msdn2.microso[...]
Microsoft
2008-02-12
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com