Este projeto consiste em usar threads e semáforos variáveis de condição POSIX para contruir um sistema leitores/escritores.
Construa um sistema com threads que acessam de forma concorrente uma fila de valores inteiros. Nesse sistema existem dois tipos de threads:
Observe que não há condição de disputa quando somente threads leitoras acessam a fila, pois as leituras não a modificam e podem ser simultâneas. Os acessos simultâneos permitem um maior desempenho em leitura. No entanto, uma thread escritora deve ter acesso exclusivo à fila para fazer suas modificações, sem acessos concorrentes de outras threads, sejam leitoras ou escritoras, para evitar condições de disputa.
Existem três tipos de soluções para esse problema de sincronização:
Você deve pesquisar as três soluções e implementá-las, usando como estrutura de dados a fila de inteiros implementada nos projetos anteriores, threads Posix e semáforos variáveis de condição Posix. Não serão aceitas soluções empregando espera ocupada (busy-wait). Em sua implementação, use três threads leitoras (que percorrem a fila) e duas escritoras (que inserem e removem elementos da fila).
Devem ser entregues os arquivos C com as soluções implementadas separadamente, sem esquecer de identificar o(s) autor(es).