



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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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