Clique aqui para ler todos os artigos desta edição
Uma introdução ao uso de Threads – Parte I
Por Roberto Lopes
Leia a Parte II.
O Windows, por ser um sistema operacional multitarefa, é capaz de executar várias tarefas ao mesmo tempo. Isso quer dizer que você pode, por exemplo, escrever um documento no Word enquanto faz o backup de sua máquina, tudo ao mesmo tempo. Se você nunca desenvolveu em um sistema operacional não multitarefa (DOS, por exemplo), pode estar achando isso óbvio, mas saiba que não é. No DOS, por exemplo, não é possível executar dois programas ao mesmo tempo (escrever um arquivo em um editor de textos enquanto faz o backup da sua máquina).
Na prática, o DOS não é capaz de executar mais de um programa ao mesmo tempo justamente por não poder gerenciar mais de uma linha de execução ao mesmo tempo, lembrando que thread vem do termo “linha de execução” (Thread of execution em inglês).
Você não vai precisar criar novas threads em todos os seus aplicativos, mas dependendo do tipo de aplicativo que você esteja escrevendo, o uso de threads pode ser altamente recomendável. Neste artigo vou explicar na prática, como funciona e como criar linhas de processamento em um aplicativo.
Entendendo como uma Thread funciona
Um processador não é capaz de processar mais de uma instrução ao mesmo tempo, isso é, se ele tem duas instruções para executar em sua fila, ele vai executar primeiro uma e depois a outra. Porém, ele é capaz de trabalhar com mais de uma linha de execução ao mesmo tempo. Cada linha de execução possui sua própria fila de instruções para serem executadas. O processador então executa uma instrução de cada linha de execução consecutivamente, fazendo com que o processador “pareça” estar executando mais de uma instrução ao mesmo tempo.
Um exemplo. Digamos que criamos um aplicativo que executa dois processamentos simultaneamente, chamados A e B. Digamos ainda que ambos possuem em cada um, cinco instruções a serem executadas e essas instruções tenham um número seqüencial crescente (para o processo A seria: A1, A2, A3, A4 e A5. O processo B seria: B1, B2, B3, B4 e B5).
Veja na Figura 1 a representação gráfica do resultado desse processamento em um aplicativo não multitarefa.
Figura 1. Exemplo de processamento não multitarefa
" [...] continue lendo...