Problema com Hyperthreading e Threads fora de ordem
8 respostas
L
logininvalido
Pessoal,
eu fiz um aplicativo para imprimir em uma dessas impressoras de códigos de barra mas, como o programa permite que várias impressões sejam feitas em seguida, colocando o valor inicial e o final, no decorrer da impressão as etiquetas saem fora de ordem.
Como faço para forçar a execução do código em apenas uma thread?
vale lembrar que eu não posso usar o /affinity já que este programa será executado em muitos computadores diferentes.
nbluis
cara, acho que cada um deve enviar para algum tipo de fila e dai um outro servico faz essa impressão pra ti … mas a estrutura tem que ver como se encaixa na aplicação…
L
logininvalido
eu envio para fila…
só que como eu envio diversas etiquetas, este envio acaba sendo fora de ordem (por causa da segunda thread)…
ViniGodoy
Se a aplicação é multi-thread, não há como garantir a ordem, a menos que você crie alguma fila de prioridades. Cada pedido de impressão deve ir numerado com a ordem que ele deve aparecer.
Ou então, use uma única thread.
L
logininvalido
Mas é isso mesmo que eu quero saber, como faço para forçar o uso de uma única thread?
L
logininvalido
Alguém???
nbluis
Cara, tu pode até fazer multithread, porem com uma thread apenas que faz a impressão, dai tu envia os objetos a serem impressos para ela e ela trata a ordem de chegada. pode utilizar metodos sincronizados também para entrega,.
Valeu…
ViniGodoy
Olha, para responder como passar de várias para uma só thread, teríamos que conhecer todo o seu algoritmo.
Você pode fazer a thread de impressão ter uma fila, e colocar um campo “ordem” no pedido de impressão. Essa thread deveria esperar pedidos e só imprimi-los quando a ordem estiver correta…