Avançado
Utilizando Threads na Prática
Veja todos os detalhes e dicas de como e onde utilizar Threads em suas aplicações
O foco de nosso artigo são as Threads. Mas, o que são Threads? Veremos nesse artigo, muito além do que elas são, ou fazem, pois abordaremos a sua utilização prática. Conheceremos o conceito, analisaremos a classe TThread e criaremos um exemplo para aplicarmos a teoria. É importante, sempre que possível, abstrairmos os conceitos e funcionalidades das tecnologias, para a realidade, seja ela o desenvolvimento do nosso software, ou do software da empresa onde trabalhamos.
O que são Threads?
TThread é uma classe abstrata e uma classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo implementando métodos abstratos, ou seja, sem implementação para que possamos utilizá-lo da maneira que precisarmos. A classe TThread, possibilita a criação de Threads separadas, para utilizarmos em nossas aplicações. Simplificando, threads são similares a processos, que são executados em background, (“por trás da aplicação”). Podemos utilizar o seguinte exemplo para entendermos melhor:
- Imaginemos que precisamos abrir uma tabela para manipularmos alguns registros, mas não temos outra opção, a não ser abrir toda a tabela. Essa operação de chamar o método Open da classe TDataSet ou “setar” a propriedade Active para True, carrega todos os registros da tabela em memória. Tranqüilo? Sim se a tabela for pequena, mas imaginemos uma tabela com 1.000.000 de registros, com certeza levará um tempo para que o processador consiga ler essas informações no HD e carregá-las na memória. Esse processo também é conhecido por overhead. Enquanto o processo está em andamento nosso sistema “trava” aos olhos do usuário. Nem tente explicar para ele, que você esta executando uma operação que exige muito do processador e que, por isso, o sistema pode ficar lento por uns momentos. Com o passar do tempo, e com o constante crescimento da concorrência no mercado de trabalho, temos mais e mais tarefas para serem executadas.
É completamente inaceitável para uma empresa, depender de um software que “trava” sempre que uma tabela esta sendo aberta, ou seja, carregada para a memória. Essa é uma das situações em que as Threads nos ajudam, pois se a utilizarmos para carregar os registros em memória o sistema não vai travar e o usuário pode continuar seu trabalho, sem perceber o que esta por trás (“background”).
Conhecendo a classe TThread
A classe TThread é declarada na Unit Classes do Delphi. E ela possui algumas características (“métodos”) que precisam de atenção para que possamos entender perfeitamente. Vejamos algumas delas:
· Execute: Método abstrato. Esse método é sempre sobrescrito ao “desenharmos” nossas próprias threads. É ele que efetivamente põe a thread e execução;
· Synchronize: Responsável pelo Sincronismo, entre as thread’s que estiverem sendo executadas, incluindo as thread’s do sistema operacional;
· Suspend: Suspende (“pausa”) temporariamente a execução;
· ...