컴퓨터는 콜백을 어떻게 구현합니까?

컴퓨터는 콜백을 어떻게 구현합니까?

나는 이미 콜백의 일반적인 사용법을 알고 있습니다. 먼저 특정 이벤트가 발생할 때 트리거(실행)되는 "콜백 함수"를 등록합니다. 저를 혼란스럽게 하는 것은 이 사건이 일어났는지 어떻게 알 수 있느냐는 것입니다. 내가 얻을 수 있는 해결책은 폴링이다. O(n) 시간에 이벤트가 발생하는지 확인하는 더 좋은 방법이 있습니까?

좋아요, 어쩌면 위의 질문이 너무 추상적일 수도 있습니다. 보다 현실적인 설명은 epoll_wait()가 파일 설명자가 준비되었는지 확인하기 위해 O(n) 시간을 사용하지 않는다는 것입니다.

그렇다면 어떻게 이루어지나요? 폴링과 본질적으로 다른 콜백 메커니즘이 있습니까?

답변1

일반적인 이벤트 기반 인터페이스에서 콜백 함수는 이벤트를 기다리기 위해 폴링하지 않습니다. 이벤트 관리자에게만 알립니다. 간단한 구현에서 객체에는 연관된 이벤트 세트가 있고 해당 객체의 각 이벤트에는 이벤트가 처리될 때 호출되는 함수 포인터(또는 그 목록)가 있습니다.

관련 정보