Na tentativa de diminuir o tempo gasto na criação/eliminação de (sub)processos, bem como economizar recursos do sistema como um todo, foi introduzido o conceito de thread. Em um ambiente de múltiplos threads (multithread), não é necessário haver vários processos para se implementar aplicações concorrentes. No ambiente multithread, cada processo pode responder a várias solicitações concorrentemente ou mesmo simultaneamente, se houver mais de um processador.
Funcionamento de Threads Fonte da imagem:linhadecodigo.com.br |
Em um ambiente multithread, não existe a ideia de um programa, mas de threads (linhas). O processo, neste ambiente, tem pelo menos um thread de execução, podendo compartilhar o seu espaço de endereçamento com inúmeros threads, que podem ser executados de forma concorrente e/ou simultânea, no caso de múltiplos processadores.Threads compartilham o processador da mesma maneira que um processo. Por exemplo, enquanto um thread espera por uma operação de E/S, outro thread pode ser executado. Cada thread possui seu próprio conjunto de registradores (contexto de hardware), porém compartilha o mesmo espaço de endereçamento com os demais threads do processo. Os threads de um mesmo processo compartilham, além do espaço de endereçamento, outros atributos, como temporizadores e arquivos, de forma natural e eficiente.
Um browser é um exemplo de uma aplicação multithread
Várias coisas podem ocorrer ao mesmo tempo:
- scroll
- download de um applet
- download de uma imagem
- tocar uma animação
- tocar um som
- imprimir uma página em background
- download de uma nova página
- olhar 3 applets de ordenação trabalhando
- Um thread parece ser um processo mas
- Compartilha o mesmo "espaço de endereçamento"
- É muito rápido chavear a execução entre threads mas não entre processos
- Um thread recebe alguns recursos próprios durante a execução
- Uma pilha de execução para poder chamar métodos, passar parâmetros, alocar variáveis locais
- Um "Program Counter"
- Chamamos isso o "contexto de execução do thread"
- Alguns autores chamam thread de "contexto de execução"
Fonte: Autor:Maia, Luiz Paulo.18/05/98, Tema da monografia:Multithread http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/threads1.html
Adaptado:Arroyo,Gabriel.
Nenhum comentário:
Postar um comentário