Buscar

01SO aula03 motivacao threads

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.

Outros materiais