08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas de aula - Jerônimo C. Pellegrini<br />

10.2.2 Jantar dos Filósofos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

10.3 Implementações de threads: nativas ou green . . . . . . . . . . . . . . . . . . 237<br />

10.3.1 Threads via co-rotinas . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

10.3.2 Modificando o interpretador meta-circular . . . . . . . . . . . . . . . 237<br />

10.3.3 Tempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

11 Memória Compartilhada 239<br />

11.1 Travas (Locks) de exclusão mútua . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

11.2 Variáveis de condição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240<br />

11.2.1 Variáveis de condição no padrão POSIX . . . . . . . . . . . . . . . . . 244<br />

11.3 Semáforos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

11.3.1 Exemplo de uso: rendezvous . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

11.3.2 Exemplo: produtor-consumidor . . . . . . . . . . . . . . . . . . . . . 246<br />

11.3.3 Exemplo: lightswitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

11.3.4 Exemplo: jantar dos filósofos . . . . . . . . . . . . . . . . . . . . . . . 249<br />

11.3.5 Semáforos POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

11.3.6 Semáforos em Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

11.3.7 Mais sobre semáforos . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />

11.4 Barreiras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />

11.5 Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

11.5.1 Variáveis de condição <strong>com</strong> bloqueio . . . . . . . . . . . . . . . . . . . 254<br />

11.5.2 Variáveis de condição sem bloqueio . . . . . . . . . . . . . . . . . . . 255<br />

11.5.3 Exemplo: produtor-consumidor . . . . . . . . . . . . . . . . . . . . . 256<br />

11.5.4 Exemplo: barreira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

11.5.5 Exemplo: jantar dos filósofos . . . . . . . . . . . . . . . . . . . . . . . 258<br />

11.5.6 Monitores em Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258<br />

11.6 Memória Transacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />

11.6.1 Suporte por hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

11.6.2 Memória transacional por software . . . . . . . . . . . . . . . . . . . 260<br />

11.7 Thread Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

11.7.1 Exemplo: um servidor HTTP . . . . . . . . . . . . . . . . . . . . . . . 263<br />

11.7.2 Thread Pools em Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

12 Passagem de Mensagens 269<br />

12.1 Mensagens assíncronas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />

Versão Preliminar<br />

12.1.1 Exemplo: produtor/consumidor . . . . . . . . . . . . . . . . . . . . . 273<br />

12.1.2 Exemplo: filtros e redes de intercalação . . . . . . . . . . . . . . . . . 274<br />

12.1.3 Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

v

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!