Pergunta

Eu não estou pedindo para alguém fazer esse dever de casa para mim, mas eu levá-la porque é uma introdução muito boa prática para C # e threading, mas ao mesmo tempo eu sinto que é talvez um pouco simples demais.

Esta é realmente a melhor maneira de enfiar ensinar? que conceitos de segmentação de chave são "perdidos" neste exercite, o que novos programadores que utilizam fios pela primeira vez provavelmente deixar de observar?

Eu tenho um monte de conhecimentos teóricos sobre segmentação, mas não tiveram de fazer um monte de-lo eu mesmo no passado, alguém tem quaisquer advertências para mim quando escrevê-lo?

Aqui está o link para a atribuição original

e aqui está o texto objetivos:

1) Criar um thread-safe genérico classe fila circular e criar uma GUI para usá-lo (ver secção seguinte). Nisso contexto, passe meios seguros de que cada operação (método) que muda o conteúdo da fila deve ser executado por apenas um thread por vez a fim de evitar a corrupção de dados. UMA fila circular está implementado como um matriz de tamanho fixo onde o início e no fim da fila são índices em a matriz. À medida que a fila enche-se, a início e no fim da fila irá deslocar a valores mais elevados como elementos são adicionados e, eventualmente, envolver em torno de o primeiro índice na matriz para reutilizar a memória. Esta classe também deve accionar uma excepção (especificado abaixo) para o chamador se a operação for inválido.

2) Criar uma interface gráfica para o controle dois threads em um produtor-consumidor moda. A GUI será capaz de começar e iniciar e parar tanto o produtor e fios e controle do consumo velocidade à qual eles modificam a GenericCircularQueue.

Foi útil?

Outras dicas

Leia sobre SyncLock ou monitor assumindo o Windows C #.

É uma maneira tão boa quanto qualquer outro para entender multi-threading, especialmente no dia de multi-núcleos.

Eu diria que este perde duas grandes coisas:

  • Lotes de gravações, lê não pode obter o bloqueio e morrer de fome; Resultado: uma fila limitada como esta enche. Você precisa encontrar uma maneira de dar aos leitores uma prioridade mais alta para que eles possam drenar a fila.
  • Escalabilidade --- você pode torná-lo thread-safe muito facilmente por apenas exigindo um bloqueio para ler ou escrever, e que vai trabalhar muito para um leitor / um escritor. No entanto, uma vez que você tem um grande número de produtores / consumidores, você vai ter um monte de contenção fio.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top