이것은 일반적인 주제입니다. 이벤트 핸들러는 어떻게 작동합니까?
이것은 무대 뒤에서-그것이 만들어 질 때 일어나는 일을 의미합니다.
나는 대략적인 생각을 가지고 있지만 그것을 확인하고 싶습니다.
이것은 일반적인 주제입니다. 이벤트 핸들러는 어떻게 작동합니까?
이것은 무대 뒤에서-그것이 만들어 질 때 일어나는 일을 의미합니다.
나는 대략적인 생각을 가지고 있지만 그것을 확인하고 싶습니다.
답변:
하위 수준에서 이벤트 처리기는 종종 장치 를 폴링 하고 하드웨어 인터럽트를 대기하여 작동합니다. 기본적으로 하드웨어 스레드가 발생할 때까지 기다리는 동안 백그라운드 스레드가 차단됩니다. 인터럽트가 발생하면 폴링 기능은 차단을 중지합니다. 그런 다음 응용 프로그램은 인터럽트를 일으킨 장치 핸들과 그 인터럽트 유형을 확인한 다음 그에 따라 동작합니다 (예 : 이벤트 처리기 함수 호출). 이것은 일반적으로 별도의 스레드에서 수행되므로 비동기 적으로 발생합니다.
물론 이것이 실제로 구현되는 방식은 OS와 장치 / 입력 유형에 따라 상당히 다릅니다. UNIX 시스템에서 소켓, 직렬 또는 USB 포트와 같은 이벤트 처리기가 구현되는 한 가지 방법은 select 또는 poll 시스템 호출을 통하는 것 입니다. 하나 이상의 파일 / 장치 설명자 (네트워크 소켓, 직렬 / USB 포트 등의 장치와 관련됨)가 poll
시스템 호출 로 전달됩니다.이 호출은 저수준 C API를 통해 프로그래머에게 제공됩니다. 이러한 장치 중 하나에서 이벤트가 발생하면 (예 : 일부 데이터가 직렬 포트에 도착하는 경우) 폴링 시스템 호출이 차단을 중지하고 응용 프로그램에서 이벤트를 발생시킨 장치 설명자 및 이벤트 유형을 확인할 수 있습니다. .
Windows에서 이것은 다르게 처리되지만 개념은 기본적으로 동일합니다.