Laço de eventosEm ciência da computação, um laço de eventos ou laço de mensagens é uma construção de programação que espera eventos e mensagens e as despacha num programa de computador. O mecanismo é um laço infinito que é bloqueado até que chegue um evento, que então é tratado (despachado). O mecanismo então é reiniciado. Quando presente, esta construção é frequentemente o controle de fluxo central do programa, podendo então ser chamada laço principal. O laço de eventos pode ser considerado uma ferramenta para a comunicação entre processos, sendo uma implementação específica de sistemas que usam troca de mensagens. AlternativasExistem diversas alternativas ao uso do laço de mensagens. Tradicionalmente, um programa pode simplesmente ser executado e terminar. Qualquer parâmetro é configurado antes da execução do algoritmo. Apesar de ter sido mais frequente no início da computação, essa técnica ainda é usada em alguns programas de linha de comando. Outra alternativa também usada por programas de linha de comando são menus. Ainda que a implementação interna possa usar um laço principal, essa técnica não é considerada como orientada a eventos. UsoDevido a predominância das interfaces gráficas, a maioria das aplicações atuais apresentam um laço principal. A rotina obtenha_próxima_mensagem() é geralmente fornecida pelo sistema operacional, e bloqueia a thread até que a mensagem esteja disponível. Portanto, o processamento é feito somente quando necessário. Segue abaixo um pseudocódigo dum laço de eventos: ROTINA principal inicializa() ENQUANTO VERDADEIRO # laço infinito mensagem ← obtenha_próxima_mensagem() SE mensagem = sair ENTÃO RETORNE FIMSE processa_mensagem(mensagem) FIMENQUANTO FIMROTINA Interface de arquivoEm Unix, a forma de tratamento de recursos como arquivos levou naturalmente a um laço de eventos baseado em arquivos. Ler e escrever arquivos, a comunicação entre processos, comunicação por redes e o controle de dispositivos Sào todos feitos através de E/S de arquivos, e a identificação do recurso é feita por um descritor de arquivo. As chamadas de sistema select e poll permitem que um conjunto de descritores e arquivo sejam monitorados quanto a mudança de estado, como para avisar a disponibilidade de escrita ou leitura. Tratamento de sinaisUma das interfaces Unix que não são tratadas como arquivos são eventos assíncronos, sinais. Eles são recebidos por uma camada leve e limitada de software que é executada enquanto a tarefa está suspensa. Se um sinal é recebido e tratado enquanto a tarefa está bloqueada numa chamada Portanto, para que os sinais sejam tratados deve-se acionar uma indicação global, e o laço de eventos deve verificar essa indicação antes e após a execução da chamada ImplementaçõesAplicações WindowsO sistema operacional Microsoft Windows requer a construção de um laço de eventos para processos que desejam interagir com utilizadores, a fim de responder aos eventos enviados pelo sistema. Eventos enviados pelo sistema operacionais variam desde interação com o usuário até tráfego de rede, processamento do sistema, cronômetro de atividade a comunicação entre processos, entre outros. Uma das principais características da maioria das aplicações Win32 é a função Versões mais recentes do Windows fornecem a garantia ao programador de que as mensagens serão enviadas ao laço de eventos da ordem em que foram recebidas pelo sistema e seus periféricos, o que relevante no desenvolvimento dum sistema multitarefa. X Window SystemAplicações X que usam a Xlib diretamente são construídas a partir do conjunto de funções Já o laço de eventos da Glib foi criado para ser usado em GTK+, mas passou a ser usado também em aplicações que não usam intefaces gráficas, como o D-Bus. Aplicações que são construídas a partir do laço de eventos da Glib incluem o GStreamer e os métodos de comunicação assíncrona do GnomeVFS. Referências
Ver também |
Portal di Ensiklopedia Dunia