Deadlock Empire - um jogo para desenvolvedores


Habr, como você sabe, não é um lugar para jogos, mas encontramos uma exceção que, em nossa opinião, é digna de menção aqui!

Conheça: Império Impasse !

A essência do jogo é gerenciar o layout dos fluxos, cujo código é fornecido nas tarefas. É necessário gerenciá-lo de maneira a obter uma situação de erro: bloqueios, contadores repetidos, atingindo determinadas seções de código e outras situações imprevistas que você precisa conhecer ao desenvolver aplicativos multithread.

A jogabilidade é uma execução passo a passo dos fluxos de programa no depurador, com a diferença de que aqui você está literalmente dizendo ao thread selecionado para executar a próxima linha de código, em vez de inserir um ponto de interrupção no código. Geralmente, uma linha de código é executada por vez, mas se a linha representa uma operação não atômica, ela deve ser expandida manualmente para executar suas operações constituintes, uma de cada vez. No entanto, você não controla completamente a situação: se um processo for bloqueado, por exemplo, em um mutex, ele ficará inativo até que outro encadeamento o libere.

As tarefas são classificadas por complexidade e organizadas em seções:

  1. Código não sincronizado . As tarefas nesta seção fornecem conceitos básicos do que acontece quando os threads que usam recursos compartilhados seguros para threads são executados em paralelo.
  2. . , , .
  3. . , .
  4. . , !
  5. . , .
  6. . , : , , !

O código de exemplo é escrito em C # e as primitivas de sincronização são obtidas do .Net, mas mesmo se você não estiver familiarizado com um ou outro, não se assuste. O conhecimento mínimo de programação e a capacidade de ler em inglês (todas as tarefas são fornecidas com comentários e links para a documentação) têm grande probabilidade de ligar para você para alcançar pelo menos o meio. Bem, idosos (mesmo com 23 anos) certamente derrotarão o chefe que aparecerá na final! E mesmo aqueles que comeram o cachorro na sincronização de fluxos se divertirão resolvendo problemas interessantes, já que os autores conseguiram tirar sarro do que na vida real é um dos piores pesadelos para o desenvolvedor.

O jogo é útil como uma ferramenta de aprendizado e é estritamente recomendado a todos os desenvolvedores iniciantes, pelo menos em .Net e Java. 

Desejamos a todos uma boa sexta-feira e uma rápida vitória sobre o chefe! :)

All Articles