====== O Jantar dos selvagens ====== (problema adaptado do livro [[http://greenteapress.com/wp/semaphores|Little Book of Semaphores]], de A. Downey) 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// "selvagem" é o seguinte: while True: servir() comer() A //thread// "cozinheiro" tem o seguinte comportamento: 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**: completar o código dos selvagens e do cozinheiro para atender as restrições de sincronização.