Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Dúvidas com bloqueio em implementação

Pessoal,

Preciso de uma ajuda, preciso realizar um reprocessamento de todos os pedidos de todos os clientes, tenho centenas de clientes e estes por sua vez possuem milhares de pedidos. Visto o grande volume de pedidos por cliente (tabela pedidos possui milhoes de linhas), estava pensando em implementar um processamento paralelo para esta atividade, até aí tudo bem, só me surgiu uma duvida que não lembro ter visto no curso, tendo eu varias threads para o processamento de pedidos de N cliente, como garantir/proteger que varias thread não irão processar os os pedidos que já estão sendo processados por outra thread , duplicando assim os dados na tabela de destino ?

1 resposta

Bom dia Felipe,

A abordagem que pensei foi de você ter algum tipo de status referente a cada pedido, por exemplo: Não processado, processando e finalizado. Tal status pode ser uma coluna a mais na tabela pedido, por exemplo.

A seguir, criar uma mecânica para que as threads só leiam pedidos que ainda estão com o status não processado.

Se o pedido estiver com status processando, você sabe que já há outra thread cuidando daquele pedido e, ao término, a thread deve atualizar o status para finalizado.

E se o status for finalizado, você sabe que outra thread já fez o processamento e não precisa processar, evitando a duplicidade na tabela de destino.

Qualquer dúvida, avisa aí.

Abraço.