Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Produtor / Consumidor em Pthreads
- Individual.
- Prazo: até 24/set
- Implemente um programa do tipo Produtor / Consumidor em Pthreads. Os produtores e os consumidores devem ser implementados com threads e compartilham um buffer (de tamanho limitado). Os produtores inserem dados no buffer e os consumidores retiram. A política de manipulação do buffer é FIFO.
- Cada produtor, ao ser lançado, recebe dois parâmetros: um valor V representando um valor inteiro e um endereço de memória B, que represente o buffer. Os produtores executam um laço com V iterações, gerando valores aleatórios (rand) e inserindo-os em B. Como o tamanho do buffer é limitado, caso não tenha espaço disponível para armazenamento, o produtor permanece bloqueado. Ao final do laço, o produtor retorna.
- Cada consumidor, ao ser lançado, recebe um único parâmetro: um endereço B de memória representando o buffer. Os consumidores executam um laço infinito, retirando do buffer um valor e verificando se o valor é um número primo. Caso o valor seja primo, imprimir na tela o thread_id do thread consumidor e o número primo encontrado no seguinte formato [id:v]. Importante: caso o valor retirado do buffer seja -1 (um negativo), o consumidor deve abandonar o thread. Caso o buffer esteja vazio, o consumidor deve ficar bloqueado aguardando que um valor seja inserido.
- O programa principal deve lançar os produtores e os consumidores e, então, aguardar o término os produtores para então inserir no buffer tantos valores -1 quanto for o número de consumidores instanciados para poder aguardar o término dos consumidores.
- Entradas:
- - Valor v de iterações por Produtor
- - Número p e c para o número de Produtores e Consumidores
- - Tamanho t para o tamanho máximo do buffer
- Dicas:
- Utilize variáveis de condição, sendo a condição representada pelo número de elementos no buffer
- Utilize uma lista encadeada como buffer, pode até ser a list do C++, mas a implementação deve ser toda com Pthreads e não com threads C++11
- Deve ser entregue um arquivo ZIP (outros formatos não serão aceitos) contendo:
- Os programas fontes, contendo comentários.
- Um PDF detalhando a implementação (sem reproduzir o código, apenas trechos se necessário ao detalhamento).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement