Instituto de Computação - UNICAMP

MC039A/MO901I Seminários sobre Software Livre

Islene Calciolari Garcia

FSFLA

Programação Orientada a Eventos

Gustavo Sverzut Barbieri

22/04 às 16:00 na CB05

Resumo: Alguns tipos de programas são baseados em tratar eventos, sejam eles do usuário, temporais ou mesmo de um sensor. Uma interface gráfica com o usuário, por exemplo, espera eventos do usuário como mouse e entrada do teclado, algum tempo passar para atualizar o relógio na tela e mesmo eventos do sistema, como repintar o conteúdo da janela. Um servidor espera comandos do cliente e então retorna respostas.

A espera por eventos é feita em um laço principal ("main loop"), só que se o sistema precisa tratar vários eventos simultaneamente, ele não pode parar em um só. Por exemplo, se estamos lendo de um socket não podemos bloquear no "read(socket)", pois não conseguiríamos tratar eventos de outros clientes em outros sockets. Para resolver tal problema podemos recorrer às temíveis "threads" e sofrer com locks/mutexes, mas também podemos utilizar chamadas como select e poll para tratar diversos descritores e impor um tempo limite na espera.

Felizmente nos sistemas UNIX, quase tudo é um descritor de arquivo, seja um arquivo real, um socket, o teclado, o mouse e até mesmo o servidor gráfico X11 se comunica via unix sockets com seus aplicativos. Logo podemos unificar todo o tratamento de eventos em torno descritores de arquivo e tempo.

A palestra relembrará rapidamente a teoria sobre select/poll, relembrando como é o processo de alguns eventos comuns como entrada de teclado e mouse em uma interface gráfica. Depois veremos um exemplo real criando um aplicativo gráfico.

Veja mais em http://en.wikipedia.org/wiki/Event-driven_programming

Sobre o palestrante: Gustavo Sverzut Barbieri é programador desde 1991, cursou Engenharia de Computação na UNICAMP de 2001 a 2005 e então trabalhou em empresas como IBM e Instituto Nokia de Tecnologia (INdT), abrindo sua própria empresa em 2008 (ProFUSION). Trabalha com GNU/Linux e software livre desde 1998, sendo o foco em interfaces gráficas e sistemas orientados a eventos desde 2002.