Threads e semáforos
Valor: 15
Equipe: João Júlio Alves Luiz Luiz Fernando Barros Tibo Rômulo Silva Santos
Data de entrega e apresentação: 14/06/2012
Deve ser mostrado e explicado (as partes principais) o código do programa em uma apresentação de 12 a 20 minutos (todos os membros da equipe devem participar). O relatório sobre o trabalho pode ser enviado email (aparecidojuneo@yahoo.com.br) até a data de apresentação.
Parte 1_1:
Implemente um programa que crie duas Threads. As duas Threads devem acessar uma variável global e modificar o valor dessa variável (a modificação dessa variável fica a critério de escolha da equipe). Cada vez que uma Thread conseguir acessar a Região Crítica deve imprimir uma mensagem avisando que conseguiu entrar e cada vez que sair deve imprimir o valor da variável global e também uma mensagem avisando que saiu da Região Crítica (se for necessário utilize a função sleep() para visualizar melhor os resultados). Para gerenciar a exclusão mútua deve ser utilizado o algoritmo de Peterson (pág:88 do livro Programação concorrente em Ambiente Windows), de Dekker (pág: 90) ou do padeiro (pág:114). Explique por que da escolha do algoritmo utilizado.
Nós escolhemos o algoritmo do padeiro (pág:114), pois ele obedece as quatro propriedades de acesso a seção crítica, e é o mais fácil, das três opções, de ser manipulado.
Parte 1_2: Modifique o código e coloque para gerenciar a exclusão mútua a função CriticalSection(), o Mutex ou um semáforo com valor inicial So=1. Justifique a sua escolha.
A escolha da equipe CriticalSection(), pois para um controle de acesso de apenas duas Threads, é o gerenciador mais barato, em termos operacionais, e o mais fácil de ser utilizado.
Parte 2:
Implemente o problema do produtor e consumidor da página 127 do livro Programação Concorrente em Ambiente Windows. O tamanho do buffer pode ir de 10 a 24 posições de armazenamento. Imprima mensagens na tela mostrando o que cada