Pergunta

O que são as melhores práticas / expressões idiomáticas que alguém deveria seguir a fim de impasses evitar?

Foi útil?

Outras dicas

quatro condições que devem ocorrer para impasse para ocorrer:

  1. Mutual condição de exclusão: um recurso que não pode ser usado por mais de um processo de cada vez

  2. Espera e condição de espera: processos já segurando recursos pode solicitar novos recursos

  3. Sem condição de preempção: Nenhum recurso pode ser retirado à força de um processo de segurá-lo, os recursos podem ser liberados apenas pela ação explícita do processo

  4. circular condição de espera: dois ou mais processos de formar uma cadeia circular, onde cada processo espera para um recurso que o processo seguinte na cadeia detém

Evite pelo menos um destes, e de preferência mais, e você não deve ter muitos problemas.

Não é assim chamado do banqueiro algoritmo , para evitar impasse. Além disso, você pode considerar o uso de Watch Dog a fim de quebrar o formulário impasse. Aqui também alguns pontos interessantes.

A técnica canônico para evitar impasse é ter uma hierarquia de bloqueio. Certifique-se de que todos os tópicos adquirir bloqueios ou outros recursos na mesma ordem. Isso evita o cenário de impasse onde bloqueio de segmento A e necessidades 1 manter o bloqueio B, enquanto rosca 2 mantém bloqueio B e necessidades bloquear A. Com uma hierarquia de bloqueio, ambas as linhas teriam de adquirir os bloqueios na mesma ordem (por exemplo, A antes de B) .

A melhor prática seria através da definição de uma classe para a sua discussão e utilizar apenas campos não-estático dessa classe na sua linha para que seus tópicos não vai estar compartilhando qualquer memória.
Claro que, para impasses evitá-lo também pode evitar o uso de semáforos, seções críticas e semáforos. Menos é melhor, se você quiser evitar impasses. Infelizmente, estes são necessários se alguma memória ou outro recurso é compartilhado entre dois segmentos ou então corre o risco de corrupção de dados.

Entre os vários métodos para entrar seções críticas -. Semáforos e mutexs são os mais populares

  • Um semáforo é um mecanismo de espera e exclusão mútua é um mecanismo de bloqueio, bem o conceito é confuso para a maioria, mas em suma, um fio de ativação de um mutex só pode desativá-lo. com isso em mente ...

  • Não permitir que qualquer processo para bloquear qualquer parcial de recursos, se uma necessidade processo 5 recursos, espere até que toda a estão disponíveis.

  • se u usar semáforo aqui, u pode desbloquear / un-esperar o recurso ocupado por outro segmento. Com isto quero dizer a preempção é outra razão.

Estes 2 de acordo com a mim são as condições básicas, os restantes 2 dos comuns 4 precauções podem ser relacionados a estes.

Se u não concordar comentários Adicionar ps. Eu GTG já tarde, eu mais tarde irá adicionar um produto de limpeza e explicação mais clara.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top