[en] A COLLABORATIVE MODEL FOR EVENT SCHEDULING USING COROUTINES - REINALDO XAVIER DE MELLO (2006)
[pt] Sistemas orientados a eventos estão se tornando cada vez mais presentes em diversos domínios de aplicação. Sistemas gráficos interativos e sistemas distribuídos são exemplos clássicos de cenários favoráveis ao emprego do paradigma de programação orientada a eventos. Atualmente, novos cenários estão surgindo, tais como os ambientes de programação para telefones celulares e, apesar dessa crescente presença em sistemas computacionais, o paradigma de orientação a eventos ainda apresenta uma série de desafios, tais como a elaboração de mecanismos eficientes para o despacho de eventos e o gerenciamento concorrente da execução desses tratadores, otimizando o uso dos recursos computacionais disponíveis. Este trabalho apresenta um modelo para o desenvolvimento de escalonadores de eventos em ambientes de programação orientados a eventos. É feito um estudo dos principais modelos de escalonamento colaborativo dos eventos, utilizando corrotinas em conjunto com outros padrões de projeto estudados. Defende-se um modelo onde o escalonador é responsável por encapsular a complexidade do gerenciamento de múltiplas linhas de execução colaborativas, procurando otimizar o uso de CPU durante chamadas de métodos bloqueantes. O uso de corrotinas permite o fácil gerenciamento dessas múltiplas linhas de execução, através da definição de mecanismos de abstração de controle, que permitem o encapsulamento do contexto de execução e a suspensão e retomada do processamento de forma transparente ao escalonador e às próprias linhas de execução. O fato de ser um modelo de concorrência colaborativa evita problemas com o controle de acessos concorrentes ao estado compartilhado pelas várias linhas de execução gerenciadas pelo escalonador. O modelo é aplicado em dois cenários distintos: uma ferramenta de programação para telefones celulares, que são inerentemente orientados a eventos de processamento assíncrono e apresentam pouco poder de processamento e fortes restrições no uso da memória disponível; e um middleware CORBA escrito em Lua, onde a comunicação entre os objetos distribuídos é toda baseada no modelo de chamada remota de métodos.