Como usar a biblioteca de programação paralela do Delphi?

DAVID CANDIDO DA SILVA

DAVID CANDIDO DA SILVA Publicado 17/11/2017 


Esta função está disponível no Delphi a partir da versão XE 7.

Vamos usar TTask para realização a programação paralela, você vai precisar
declarar System.Threading na seção uses.

Veja o código abaixo:

procedure TFormThreading.MyButtonClick(Sender: TObject);
var   tasks: array of ITask;   value: Integer; 
begin   Setlength (tasks ,2);   value := 0;   
 tasks[0] := TTask.Create (procedure ()     begin     sleep (3000); // 3 seconds 
   TInterlocked.Add (value, 3000);    end);   tasks[0].Start;   
 tasks[1] := TTask.Create (procedure ()     begin     sleep (5000); // 5 seconds 
   TInterlocked.Add (value, 5000);
 end);   tasks[1].Start;   
 TTask.WaitForAll(tasks);   ShowMessage ('All done: ' + value.ToString); 
end;


Neste exemplo, foram criadas duas tarefas e ambas foram executadas ao mesmo tempo.
Para efeitos de comparação veja:

Sequencia tradicional (sem utilizar TTask/ITask) = 8 segundos.

Usando TTask.WaitForAny( Aguardar qualquer uma ) 3 segundos.

Usando TTask.WaitForAll( Aguardar executar todas tarefas ) = 5 segundos.

Perceba a vantagem do uso desta biblioteca, em que um código que normalmente
demoraria 8 segundos, pode ser executado integramente e 5 segundos apenas.

Claro que este é apenas um pequenos exemplo, mas pense nas possibilidades!

Para mais detalhes, você pode acessar o site da embarcadero(em Inglês),
página esta, que foi usada como base para a elaboração desta dica.
embarcadero.com/RADStudio/XE7/en/Using_TTask_from_the_Parallel_Programming_Library

 

Voltar ao topo