Se eu tiver 3 Buffers (objectos partilhados), que são por exemplo duas filas de dimensão 5 (Fila1 e Fila2) e um array de dimensão 5 (Portas), existe um tapete rolante1 que é alimentado por uma maquina, tapete rolante1 por sua vez alimenta Fila1 desde que esta não esteja cheia, por sua vez Fila1 manda objectos para o array Portas para os index livres, o tempo que os objectos estão no array Portas é Random (nunca é o mesmo) dai que podem não ter uma entrada/saida sequencial, array Portas por sua vez manda os objectos para Fila2 desde esta não esteja cheia, e Fila2 por sua vez para os tapete rolante2 desde que este esteja livre, que os manda para um armazem.
Pretende-se que o tempo entre o array Portas e Fila2 seja o minimo possivel.
Como é que resolvo isto usando Threads ???
Só um comentário. Aqui no Brasil chamamos o "tapete rolante" de esteira.
Vamos ver se entendi a situação. Você tem duas filas, ligadas por esteiras.
Máquina->Fila1->ESTEIRA1->Portas->Esteira2->Fila2->Armazém
O produtor é a máquina, que gera elementos que vão para esteira, abastecem a fila 1. O array de portas é descarregado para o Armazem, de tempos em tempos.
As c;asses “Máquina” e “Armazém” nesse caso podem ser modeladas usando Threads. Que terão que ser sincronizadas nas “filas”, para que interrompam seu processamento caso essas filas estejam cheias.
Não entendi exatamente o que você quer. Você disse que pretende-se que o tempo entre o array Portas e Fila2 seja o minimo possivel, mas qual variável dessas você pode controlar? Você pode controlar a velocidade do produtor, por exemplo? Você pode parar uma das filas?
Se você não puder controlar nada, será possível apenas mostrar uma simulação dessa "linha de montagem" trabalhando.
realmente por aqui por vezes damos outro nome ás coisas, mas esteira também serve !
Voltando ao problema posto, vou enviar um diagrama com algumas dicas, porque de facto existem alguns pormenores que não falei ou não ficaram bem claros.
Você acha que apenas devem existir duas Threads (Maquina e Armazem) e quanto ás classes ?? Devo ter :
Fila1 e Fila2
Esteira1 e Esteira2
Portas
Controlador
E depois sincronizar os metodos destas classes ?? como ??
Outra duvida que tenho é em ralação ao consumidor/produtor, por exemplo : array Portas consome de Fila1 e Produz para Fila2, como é que se gere esta situação ??