Escolar Documentos
Profissional Documentos
Cultura Documentos
1)
Considere um software que verifica o produto mais caro adquirido por seus 4 principais clientes. Para
realizar essa busca, o software precisa percorrer 4 imensos arquivos e pesquisar em cada registro o valor do
produto e o nome. O nome do produto mais caro e seu valor so guardados nas variveis globais char
produto[31] e float valor. Ao final do programa, somente esses valores so impressos. Para agilizar a execuo,
o software utiliza 4 threads que possuem o mesmo cdigo, mas, dependendo do argumento, vasculha um
arquivo diferente. Para cada registro lido, a thread compara com as variveis globais, e, se necessrio, as
atualiza.
a) Existe condio de disputa? Caso positivo, qual a condio e quem seria a regio crtica?
b) Implemente o cdigo das threads que representado pela funo void *varredura(void *idArquivo), o qual
aguarda o identificador do arquivo a ser lido. Para facilitar a implementao, no se preocupe em
implementar fielmente a abertura e leitura dos dados dos arquivos binrios (ex: feof, fopen...). Pode-se
usar um pseudo-cdigo somente para a manipulao dos arquivos. Ademais, use uma estrutura (struct)
para os registros dos arquivos mais conveniente para agilizar a implementao. A thread deve percorrer todo seu
arquivo, e, assim, termina ao concluir a leitura de todos os seus registros. Se no entendimento desta questo,
voc verificou uma condio de disputa, a regio crtica precisa ser acessada com excluso mtua. No
precisa mostrar a criao das threads na funo main, mas precisa mostrar o uso/inicializao dos
recursos de pthreads solicitados nesta questo. Adicionalmente, precisa colocar o cdigo na funo
main relativo impresso do resultado final.
1.