Como usar a biblioteca de programação paralela do Delphi?
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; |
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
-
InfusTec
-
6.354 views
- 0 comentários
- 2 de outubro de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo