No desenvolvimento diário, podemos usar filas, que são uma estrutura de armazenamento capaz de alcançar o "primeiro a entrar, primeiro a sair".
Cenários de aplicação: escrever logs, enviar e-mails, etc
Se precisarmos registrar o log de interface de cada usuário que solicita nossos dados, não precisamos escrever um log toda vez que o usuário solicitar, podemos colocar o conteúdo do log na fila e deixar que outras threads executem, para não afetar a eficiência da aplicação.
Outra vantagem é que, adicionando dados à fila no caso de concorrência, usando uma única thread para executar os dados da fila, pode evitar muitas exceções; se houver concorrência (multithreaded), o acesso ao mesmo arquivo físico causará exceções. (sujeito à disponibilidade)
Abordagem universal de fila:
Esta é uma classe abstrata, e você precisa herdar essa classe de abstração e implementar o método de abstração Executar. Como não sei que tipo de dados você quer processar, genéricos são usados aqui, ou seja, Entidade é do tipo string, parâmetros do método são do tipo string, e os dados que você está processando são dados do tipo string.
A fila thread-safe ConcurrentQueue garante que não haverá exceções em um ambiente multi-thread.
ManualResetEvent para controlar o sinal da thread,No passado, checávamos a fila para dados a cada poucos segundos ou minutosAgora, adicionamos os dados à fila e só precisamos passar um sinal!
Uso:
(Fim)
|