Thread

Disponível somente no TrabalhosFeitos
  • Páginas : 14 (3271 palavras )
  • Download(s) : 0
  • Publicado : 3 de abril de 2013
Ler documento completo
Amostra do texto
Linha ou Encadeamento de execução (em inglês: Thread), é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte à thread é fornecido pelo próprio sistema operativo (SO), no caso da linha de execução ao nível do núcleo (em inglês: Kernel-Level Thread (KLT)), ou implementada através de uma biblioteca de uma determinada linguagem, nocaso de uma User-Level Thread (ULT).

Uma thread permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.

Em hardwares equipados com uma única CPU, cada thread é processada de forma aparentemente simultânea, pois a mudança entre uma thread e outra é feita de forma tão rápida que para outilizador isso está acontecendo paralelamente. Em hardwares com múltiplos CPUs ou multi-cores, as threads são realizadas realmente de forma simultânea;

Os sistemas que suportam apenas uma única thread (em real execução) são chamados de monothread enquanto que os sistemas que suportam múltiplas threads são chamados de multithread.
Índice

1 Exemplo
2 Particularidades
3 Estadosde uma linha de execução
4 ULT e KLT
5 Escalonamento
6 Comparação entre linha de execução e Processo
7 Modelo de Geração de Multithreads
8 Cancelamento
9 Exemplos
9.1 Java
9.2 Java, exemplo simples em português
9.3 C
9.4 C++
9.5 Ruby
9.6 Delphi
10 Referências

Exemplo

Um exemplo simples pode serexpressado através de um jogo onde o mesmo pode ser modelado com linhas de execução diferentes, sendo uma para desenho de imagem e outra para áudio; Neste caso, há um thread para tratar rotinas de desenho e outro thread para tratar áudio; No ponto de vista do usuário, a imagem é desenhada ao mesmo tempo em que o áudio é emitido pelos alto-falantes; Porém, para sistemas com uma única CPU, cada linha deexecução é processada por vez;
Particularidades

Cada thread tem o mesmo contexto de software e compartilha o mesmo espaço de memória (endereçado a um mesmo processo-pai), porém o contexto de hardware é diferente. Sendo assim o overhead causado pelo escalonamento de uma thread é muito menor do que o escalonamento de processos. Entretanto não há acesso protegido à memória nativa (suaimplementação fica a cargo do programador) devido ao compartilhamento do espaço de memória.

Um dos benefícios do uso das threads advém do facto do processo poder ser dividido em várias threads; quando uma thread está à espera de determinado dispositivo de entrada/saída ou qualquer outro recurso do sistema, o processo como um todo não fica parado, pois quando uma thread entra no estado de 'bloqueio', umaoutra thread aguarda na fila de prontos para executar.

Uma thread possui um conjunto de comportamentos padrão, normalmente encontrados em qualquer implementação ou sistema operativo.

Uma thread pode:

criar outra da mesma forma que um processo, através do método thread-create, onde a thread retorna um ID como primeiro argumento (resultado da função de criação);
esperar outra threadse sincronizar, através do método join;
voluntariamente "desistir" da CPU por não precisar mais do processamento proposto pela própria ou por vontade do utilizador. Feito através do método thread-yield;
replicar-se sem a necessidade de duplicar todo o processo, economizando assim memória, processamento da CPU e aproveitando o contexto (variáveis, descritores, dispositivos de I/O).Estados de uma linha de execução

Uma thread pode assumir os seguintes estados:

Unstarted: logo após ser criada (antes do Start());
Running: após ser ativada (Start()) ou após método Resume();
Suspended: após método Suspended();
Stopped: após método Abort().

ULT e KLT

Usualmente as threads são divididas em duas categorias: thread ao nível do utilizador (em inglês:...
tracking img