Este é um tópico geral, como funcionam os manipuladores de eventos?
Isso significa nos bastidores - o que acontece quando eles são criados.
Tenho uma ideia aproximada - mas gostaria de confirmar.
Este é um tópico geral, como funcionam os manipuladores de eventos?
Isso significa nos bastidores - o que acontece quando eles são criados.
Tenho uma ideia aproximada - mas gostaria de confirmar.
Respostas:
Em um nível baixo, os manipuladores de eventos geralmente trabalham pesquisando um dispositivo e aguardando uma interrupção do hardware. Essencialmente, um encadeamento em segundo plano é bloqueado enquanto aguarda a interrupção do hardware. Quando ocorre uma interrupção, a função de pesquisa pára de bloquear. O aplicativo pode descobrir qual identificador de dispositivo causou a interrupção e que tipo de interrupção foi e, em seguida, agir em conformidade (por exemplo, invocando uma função de manipulador de eventos). Isso geralmente é feito em um thread separado, para que ocorra de forma assíncrona.
Obviamente, a maneira como isso é realmente implementado varia consideravelmente, dependendo do sistema operacional e do tipo de dispositivo / entrada. Nos sistemas UNIX, uma maneira pela qual os manipuladores de eventos são implementados para soquetes, portas seriais ou USB é através das chamadas de sistema de seleção ou pesquisa . Um ou mais descritores de arquivo / dispositivo (que estão associados a um dispositivo, como um soquete de rede, porta serial / USB, etc.) são passados para a poll
chamada do sistema - que é disponibilizada ao programador por meio de uma API C de baixo nível. Quando um evento ocorre em um desses dispositivos (como, por exemplo, alguns dados chegam em uma porta serial), a chamada do sistema de pesquisa para de bloquear e o aplicativo pode determinar qual descritor de dispositivo causou o evento e que tipo de evento foi. .
No Windows, isso é tratado de maneira diferente, mas os conceitos são basicamente os mesmos.