Aula 07 Cap 06 Threads
Prof. Esp. André Luís Belini
Bacharel em Sistemas de Informações
MBA em Gestão Estratégica de Negócios
Capítulo 6 - Threads
• Com o conceito de múltiplos threads (multithread) é possível projetar e implementar aplicações concorrentes de forma eficiente, pois um processo pode ter partes diferentes do seu código sendo executadas concorrentemente, com um menor overhead do que utilizando múltiplos processos.
• Como os threads de um mesmo processo compartilham o mesmo espaço de endereçamento, a comunicação entre threads não envolve mecanismos lentos de intercomunicação entre processos, aumentando, consequentemente o desempenho da aplicação.
2
1
• O desenvolvimento de programas que exploram os benefícios da programação multithread não é simples.
• A presença do paralelismo introduz um novo conjunto de problemas, como a comunicação e sincronização de threads. • Existem diferentes modelos para a implementação de threads em um sistema operacional, onde desempenho, flexibilidade e custo devem ser avaliados.
3
Ambiente Monothread
• Um programa é uma sequência de instruções, composta por desvios, repetições e chamadas a procedimentos e funções. • Em um ambiente monothread, um processo suporta apenas um programa no seu espaço de endereçamento.
• Neste ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos.
4
2
• A utilização de processos independentes e subprocessos permiti dividir uma aplicação em partes que podem trabalhar de forma concorrente.
• Exemplo: software gerenciador de e-mails, pois ao mesmo tempo que você está lendo uma mensagens, outras podem estar chegando ou sendo enviadas ao mesmo tempo.
• Com o uso de múltiplos processos, cada funcionalidade do software implicaria a criação de um novo processo para atendê-la, aumentando o desempenho da aplicação. 5
Concorrência com subprocessos e processos independentes
Subprocessos
Processos Independentes
6
3
• Problemas