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.