Baixe o app para aproveitar ainda mais
Prévia do material em texto
1/1 Motivação para o uso de threads Imagine a seguinte situação: Precisamos armazenar os tijolos produzidos por um equipamento que, ao término da fabricação de um tijolo, espera que haja alguém no final da esteira para pegá-lo. Se o procedimento de pegar o tijolo e levá-lo até o depósito for feito por uma única pessoa, provavelmente diversos tijolos caíram no chão enquanto essa pessoa leva um dos tijolos para o depósito. O que fazer? Se houver uma pessoa que fique na saída da esteira retirando os tijolos e os entregando para seus assistentes, a chance de que um tijolo caia no chão será muito reduzida, pois cada tijolo será entregue em um período de tempo constante ao assistente que o levará ao depósito. O encarregado de pegar os tijolos está “a postos” em um tempo conhecido, permitindo, assim, calibrar o equipamento. Pode haver muitos assistentes congestionando o caminho? Sim, identificando que o caminho não é suficiente para a demanda. Pensando agora em uma aplicação, como um servidor para transferências de arquivos. Uma thread fica “a postos” para receber requisições que serão entregues a novas threads criadas sob demanda para atender a cada uma das requisições. A cada requisição, uma nova thread é criada e a thread principal retorna imediatamente para aguardar novas requisições, evitando (ou reduzindo muito) o descarte de mensagens. Poderemos ter várias threads sendo executadas concorrentemente, podendo gerar um tempo de resposta maior, mas as requisições não serão perdidas. Só para registrar: esse tipo de servidor é chamado de servidor concorrente. 2/3 As threads contribuem para o melhor uso dos recursos com: Melhor aproveitamento da fatia de tempo - Permite que a execução do processo continue mesmo que algumas de suas Threads estejam bloqueadas. Compartilhamento de Recursos - Threads compartilham memória e outros recursos do processo. Economia de tempo de gerenciamento - Threads são mais econômicas de serem criadas e o custo da troca de contexto é menor. Todas as threads de um mesmo processo compartilham o mesmo espaço de endereçamento. Utilização de Múltiplos Processadores - Cada Thread pode ser executada em paralelo em um processador distinto.
Compartilhar