quarta-feira, 27 de junho de 2007

O que é um Thread?


Um thread é um pequeno programa que trabalha como um sub-sistema independente de um programa maior, executando alguma tarefa específica. Um programa dividido em vários threads pode rodar mais rápido que um programa monolítico, pois várias tarefas podem ser executadas simultaneamente. Os vários threads de um programa podem trocar dados entre sí e compartilhar os recursos do sistema.

Para o programador, existem vantagens e desvantagens em dividir um programa em vários threads. Por um lado isso facilita o desenvolvimento, pois é possível desenvolver o programa em módulos, testando-os isoladamente, ao invés de escrever um único bloco de código. Mas, por outro lado, com vários threads o trabalho torna-se mais complexo, devido à interação entre eles.

Existem diferenças na maneira como os sistemas operacionais executam processos e threads. Por exemplo, o Windows têm mais facilidade para gerenciar programas com apenas um processo e vários threads, do que com vários processos e poucos threads, pois Windows o tempo para criar um processo e alternar entre eles é muito grande. O Linux e outros sistemas baseados no Unix por sua vez é capaz de criar novos processos muito rápido, o que explica o fato de alguns aplicativos, como por exemplo o Apache, rodarem muito mais rápido no Linux do que no Windows, ao serem portados para ele. Porém, ao serem alterados, os mesmos programas podem apresentar um desempenho semelhante nos dois sistemas.

Tradicionalmente o processador executa um thread ou processo de cada vez, chaveando entre eles várias vezes por segundo para nos dar a impressão de que todos estão sendo executados ao mesmo tempo.

O HyperThreading utiliza o tempo ocioso do processador para executar instruções de um segundo thread. Ou seja, o processador passa a se comportar como se fosse um sistema dual, o que naturalmente significa mais instruções processadas por ciclo e mais desempenho.

Programas de escritório, navegadores, etc. utilizam quase que exclusivamente instruções de inteiros, enquanto jogos, aplicativos gráficos, etc. se concentram nas unidades de ponto flutuante. Mesmo que você esteja rodando o OpenOffice e o Maya, ambos não compartilharão os mesmos ciclos de processamento, fazendo com que hora o coprocessador, ora as unidades de inteiros fiquem ociosas. No HyperThreading, o sistema operacional terá a chance de aproveitar todos estes ciclos ociosos, dividindo as tarefas entre os dois processadores virtuais.

Fonte: http://www.guiadohardware.net/artigos/225/

0 comentários:

by TemplatesForYou
SoSuechtig,Burajiru