Qual é o problema dos leitores-escritores?
O "problema dos leitores-escritores" é um dilema de programação criado quando vários leitores e escritores precisam de acesso ao mesmo recurso. Se todos tivessem acesso permitido ao mesmo tempo, problemas como substituições, informações incompletas e outros problemas podem surgir. Portanto, os programadores podem restringir o acesso ao controle de quais encadeamentos de processamento veem o recurso e quando, considerando as necessidades do sistema e dos usuários. Existem várias maneiras de resolver o problema dos leitores-escritores. Uma das soluções mais comuns envolve o uso de semáforos para sinalizar o status e controlar o acesso. Uma vez que um escritor entra na equação, a situação se torna mais complicada. Se um thread estiver escrevendo enquanto outros threads estão lendo, os leitores podem não obter informações corretas. Eles poderiam receber apenas parte da mudança ou podem ver as informações desatualizadas e achar que são precisas.
Mais de um escritor também pode criar um problema. Alterações simultâneas no mesmo conteúdo podem substituí -lo e criar outros erros. Sob o problema dos leitores-escritores, os programadores devem decidir se os leitores ou escritores têm prioridade e como lidar com o acesso. Leitores ou escritores podem ter prioridade, ou o sistema pode atribuir acesso a partir de primeira chegada. Esta terceira solução pode evitar longas esperas, mas pode vir com problemas próprios.
Em uma solução em que os leitores têm prioridade, o sistema pressupõe que qualquer leitor que solicite acesso deve ser permitido primeiro, quando o acesso estiver disponível. Isso significa que quaisquer escritores que desejam acessar o recurso podem precisar esperar. Por outro lado, o sistema pode assumir que, como os escritores precisam fazer alterações que possam afetar os leitores, eles devem ter prioridade sob o problema dos leitores-escritores. Quando um leitor é feito com um recursoCE, um escritor poderia pular para fazer uma mudança. Isso se aplica não apenas a ações do usuário, como tentar salvar um documento, mas a processos internos dentro do computador que mantêm o sistema funcionando.
Outra opção permite que o problema dos leitores-escritores equilibre as necessidades de ambas as partes, permitindo que cada acesso a encadeamentos de processamento à medida que chega. Isso impede que os escritores façam alterações que se substituem ou confundem os leitores, sem deixar os leitores esperando ou forçando os escritores a se manter enquanto os leitores terminarem. Tais prioridades podem ser incorporadas em um programa de software ou controle de acesso à memória em um computador. Os usuários podem fazer alterações se se sentirem confortáveis com a programação e o sistema permitir.