[fpc-pascal] TThread.Queue vs TThread.Synchronize

Mattias Gaertner nc-gaertnma at netcologne.de
Mon Feb 23 11:56:23 CET 2015


On Mon, 23 Feb 2015 10:08:45 +0000
Graeme Geldenhuys <mailinglists at geldenhuys.co.uk> wrote:

> Hi,
> 
> I've recently seen some posts in Delphi groups that the preferred way is
> to use TThread.Queue instead of TThread.Synchronize.
> 
> Why is that? What are the benefits?

Synchronize waits for the main thread.
Queue does not.
Both are executed by the main thread via CheckSynchronize.
Both are useful.

> I've look at FPC trunk and see we now have a Queue() implementation, and
> I adjusted a simple multi-threaded GUI example app I had. But I still
> don't really understand what is the benefit of Queue vs Synchronise. I
> still had to create a "synchronise method" which I pass in to Queue() -
> similar to what I did for Synchronize().
> 
> Also how is Queue() calls processed? For example to get Synchronize() to
> work I had to call CheckSynchronize in my main event loop. Is this also
> required for Queue() functionality?

Yes.

Mattias



More information about the fpc-pascal mailing list