Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Próxima revisão | Revisão anterior | ||
| so:jantar_dos_selvagens [2011/06/17 22:50] – created maziero | so:jantar_dos_selvagens [2017/08/03 14:14] (atual) – maziero | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | ====== O Jantar dos selvagens ====== | ||
| + | (problema adaptado do livro [[http:// | ||
| + | |||
| + | Uma tribo de selvagens está jantando ao redor de um grande caldeirão contendo N porções de missionário cozido. Quando um selvagem quer comer, ele se serve no caldeirão, a menos que ele esteja vazio. Nesse caso, o selvagem primeiro tem de acordar o cozinheiro e esperar que ele encha o caldeirão de volta, para então se servir novamente. Após encher o caldeirão, o cozinheiro volta a dormir. | ||
| + | |||
| + | O comportamento de cada //thread// " | ||
| + | |||
| + | < | ||
| + | while True: | ||
| + | servir() | ||
| + | comer() | ||
| + | </ | ||
| + | |||
| + | A //thread// " | ||
| + | |||
| + | < | ||
| + | while True: | ||
| + | encher_caldeirao() | ||
| + | dormir() | ||
| + | </ | ||
| + | |||
| + | As restrições de sincronização são: | ||
| + | |||
| + | * Selvagens não podem se servir ao mesmo tempo (mas podem comer ao mesmo tempo). | ||
| + | * Selvagens não podem se servir se o caldeirão estiver vazio. | ||
| + | * O cozinheiro só pode encher o caldeirão quando ele estiver vazio. | ||
| + | |||
| + | **Desafio**: | ||