TransWikia.com

Qual a diferença entre passar nil no synchronize/queue de um Task/Thread?

Stack Overflow em Português Asked by Diego_F on November 5, 2021

Na maioria dos exemplos que encontrei a estrutura de uma Task básica é:

procedure
var
  FTask : ITask;
begin
  FTask := TTask.Run(
  procedure
  begin
    //código a ser executado dentro da Task;
    TThread.synchronize(TThread.CurrentThread,
    procedure
    begin
      //Código que executa dentro da Thread principal;
    end);
  end;
  );
end;

Onde TThread.CurrentThread indica qual em qual Thread o código vai executar, mas já vi também exemplos de código em que no lugar de TThread.CurrentThread é passado nil, qual a diferença? Como funciona? O SO vai decidir por conta própria qual Thread vai executar o código?

One Answer

Isso não é onde o codigo vai ser executado, mas sim com que thread vai ele sincronizar. No caso de passar nil vai ser com a Main Thread (só há uma) a TThread.CurrentThread representa a thread atual, qualquer que seja

Answered by Tiago Rodrigues on November 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP