Diferença entre ITASK e IFUTURE
ITask e IFUTURE são interfaces disponíveis através de TTASK que se encontra na unit System.Threading…
Enquanto ITask aguarda uma chamada x.start; para iniciar o processamento em uma Thread própria, o IFuture já inicia o processamento de imediato e aceita aguardar uma resposta após o término de execução.
Exemplo ITask: (aguarda start para iniciar)
1
2
3
4
5
6
7
8
| tsk := TTask.create( procedure begin
// código a ser executado
end);
tsk.start;
//pode ou não pedir para aguardar conclusão:
tsk.wait( 1000000); |
tsk := TTask.create( procedure begin
// código a ser executado
end);
tsk.start;
//pode ou não pedir para aguardar conclusão:
tsk.wait( 1000000);
Exemplo IFuture: (inicia assim que for criado)
1
2
3
4
5
6
| tsk = TTask.Future<boolean>(
function:boolean
begin
// código.....
Result := true; // resposta para o processamento
end); |
tsk = TTask.Future<boolean>(
function:boolean
begin
// código.....
Result := true; // resposta para o processamento
end);
Resposta := tsk.value; // aguarda a Thread terminal e pega o resultado
Caso precise retornar mais de um valor, há possibilidades de utilizar um RECORD:
Veja o exemplo:
1
2
3
4
5
6
7
8
9
10
11
12
| TPessoa = record
nome:string;
idade:integer;
end;
tsk = TTask.Future<TPessoa>(
function:TPessoa
begin
// código.....
Result.nome := 'Nome'; // resposta para o processamento
Result.idade := 18;
end); |
TPessoa = record
nome:string;
idade:integer;
end;
tsk = TTask.Future<TPessoa>(
function:TPessoa
begin
// código.....
Result.nome := 'Nome'; // resposta para o processamento
Result.idade := 18;
end);
Recuperando o resultado:
1
2
3
4
|
resposta := tsk.value; // aguarda a thread terminar e pega o resultado
if resposta.idade>18 then
// seu código |
resposta := tsk.value; // aguarda a thread terminar e pega o resultado
if resposta.idade>18 then
// seu código
Autor original: Amarildo Lacerda
Este texto foi escrito bom base no material disponível em:
https://github.com/amarildolacerda/docs/blob/master/DelphiXFirebid.pdf
-
InfusTec
-
9.401 views
- 0 comentários
- 16 de fevereiro de 2016
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo