Leitores e Escritores

Este projeto consiste em usar threads e semáforos variáveis de condição POSIX para contruir um sistema leitores/escritores.

Problema

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.

Observações

Existem três tipos de soluções para esse problema de sincronização:

A entregar

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).