Estou tentando entender o que é um loop de eventos. Geralmente, a explicação é que, em um loop de eventos, você faz algo até ser notificado de que um evento ocorreu. Você lida com o evento e continua fazendo o que estava fazendo antes.
Para mapear a definição acima com um exemplo. Eu tenho um servidor que 'escuta' em um loop de eventos e, quando uma conexão de soquete é detectada, os dados são lidos e exibidos, após o que o servidor continua / começa a escutar como antes.
No entanto, esse evento acontecendo e nós sermos notificados 'exatamente assim' são muito para eu lidar. Você pode dizer: "Não é 'exatamente assim' que você precisa registrar um ouvinte de evento". Mas o que é um ouvinte de eventos, mas uma função que, por algum motivo, não está retornando. Está em seu próprio loop, aguardando para ser notificado quando um evento acontece? O ouvinte de evento também deve registrar um ouvinte de evento? Onde isso termina?
Eventos são uma boa abstração para se trabalhar, mas apenas uma abstração. Acredito que, no final, as pesquisas são inevitáveis. Talvez não estejamos fazendo isso em nosso código, mas os níveis mais baixos (a implementação da linguagem de programação ou o SO) estão fazendo isso por nós.
Basicamente, resume-se ao pseudo-código a seguir, que está sendo executado em algum lugar baixo o suficiente para não resultar em espera ocupada:
while(True):
do stuff
check if event has happened (poll)
do other stuff
Esta é a minha compreensão de toda a ideia e gostaria de saber se isso está correto. Estou aberto a aceitar que toda a idéia está fundamentalmente errada, caso em que eu gostaria da explicação correta.
EventSource
fazendo se não estiver pesquisando a entrada do teclado?