Thread são seqüências de instrução que podem ser executadas em simultâneamente com outras threads. As threads vão compartilhar entre si recursos e memória de maneira direta.

Porque usar threads?

Em várias ocasiões o programa pode ficar bloqueado enquanto espera uma entrada do usuário ou um recurso de Entrada/Saída. Durante essa espera seu programa pode através de uma thread ir executando alguma outra computação.

Nos dias de hoje computadores de vários núcleos (multi-core) começam a se popularizar. Nesse tipo de processador seu programa pode executar algumas thread em um processador e outras em outro.

Um exemplo

Vamos colocar isso num exemplo. Suponha que você quer calcular o somatório i ao quadrado, variando de 0 até 5.

Somatório
Figura 1 – Um somatório simples.

Que nada mais é que:

Somat
Figura 2 – Somatório expandido.

Algoritmo
Para computar isso podemos escrever um algoritmo assim:

sum = 0
for i de 0 até 5 faça
    sum = sum + i*i
print sum

Programa 1 – Somatório simples em pseudo-código.

Quando executarmos isso, teremos:

55

Núcleo único
Ao executarmos esse programa num computador com um só processador simples ele é executado assim:

GIF animado de laço em um processador simples
Animação 1 – Somatório serial em um único processador

Ou seja, primeiro o processador vai computar 0² depois 1² depois 2² assim por diante. O laço for é serial, ele vai ser sempre executado um passo de cada vez, sempre com um passo esperando o passo anterior terminar para executar o próximo.

Núcleo duplo
Se executarmos esse mesmo código em um sistema com um processador de dois núcleos por exemplo (dual-core), isso certamente irá acontecer:

Animação 2 - Dual Core executando um código serial
Animação 2 – Um código serial sendo executado num processador de dois núcleos.

Um núcleo vai ficar ocioso enquanto o outro núcleo vai estar trabalhando. Se você comprou um processador de dois núcleos de 2Ghz achando que iria atingir um desempenho de 4Ghz, nesse momento você terá a sensação de estar usando numa máquina de 2 Ghz, pois só um processador de fato estará sendo usado.

Voltar ao índice principal deste artigo.