Це загальна тема, як працюють обробники подій?
Це означає, що за лаштунками - що відбувається, коли вони створені.
У мене є груба ідея - але я хотів би, щоб це було підтверджено.
Це загальна тема, як працюють обробники подій?
Це означає, що за лаштунками - що відбувається, коли вони створені.
У мене є груба ідея - але я хотів би, щоб це було підтверджено.
Відповіді:
На низькому рівні обробники подій часто працюють, опитуючи пристрій і чекаючи апаратного перерви. По суті, фонова нитка блокує, очікуючи на те, щоб апаратне переривання відбулося. Коли відбувається переривання, функція опитування перестає блокувати. Потім програма може з'ясувати, яка ручка пристрою спричинила перерву та який тип переривання, а потім діяти відповідно (наприклад, викликаючи функцію обробника подій). Зазвичай це робиться в окремому потоці, щоб це відбувалося асинхронно.
Звичайно, спосіб цього реально реалізується в значній мірі залежно від ОС та типу пристрою / вводу. У системах UNIX один із способів реалізації обробників подій для таких речей, як сокети, послідовний порт або USB - це через вибір або опитування системи. Один або кілька дескрипторів файлів / пристроїв (які пов'язані з таким пристроєм, як мережевий сокет, послідовний порт / порт USB тощо) передаються в poll
системний виклик - який надається програмісту через API низького рівня. Коли подія відбувається на одному з цих пристроїв (наприклад, деякі дані надходять на послідовний порт), виклик опитувальної системи припиняє блокувати, і програма потім може визначити, який дескриптор пристрою спричинив подію та який тип події це був .
У Windows це обробляється по-різному, але поняття в основному однакові.