threads
04 - Threads
Uso de thread
• Frequentemente há situações em que é desejável ter múltiplos threads de controle no mesmo espaço de endereçamento executando em quase-paralelo, como se eles fossem processos separados (exceto pelo espaço de endereçamento compartilhado)
• Por que alguém desejaria ter um tipo de processo dentro de outro processo?
2
Uso de thread
• A principal razão para existirem threads é que em muitas aplicações ocorrem múltiplas atividades ao mesmo tempo
• É precisamente o mesmo argumento para existência de processos: em vez de pensarmos em interrupções, temporizadores e chaveamento de contextos, podemos pensar em processos paralelos
3
Uso de thread
• Argumentos
1. Em várias aplicações há várias coisas, as vezes totalmente independentes, que podem ser feitas ao mesmo tempo. Quase sempre é bem mais simples decompô-la em threads que em processos
2. Threads são entidades muito mais leves que processos. Criar threads chega a ser 100 vezes mais rápido que criar um processo
3. Desempenho: aplicações que realizam muito E/S tem seu desempenho melhorado com o uso de threads 4
Uso de thread
• Um processador de texto com 3 threads
Formata o texto
Interage com o usuário através do teclado
Salva no disco periodicamente 5
Uso de thread
• Um processador de texto com 3 threads
– No lugar de cada thread poderia ser usado um processo? Por quê?
• Três threads do mesmo processo poderiam trabalhar sobre o mesmo arquivo “paralelamente”
• Três processos sofreriam escalonamento e cada atividade aconteceria de forma isolada sobre o arquivo
6
Uso de thread
• Um servidor web com múltiplos threads
– A coleção de páginas mais acessada ficam na memória para evitar de buscá-las no disco e são chamadas de cache
– Um thread despachante lê requisições que chegam da rede
– Ele escolhe um thread operário e lhe entrega a requisição que verifica se a página está na cache ou se