jonas at freepascal.org
Sat Aug 22 16:57:48 CEST 2020
On 22/08/2020 16:09, Martin via fpc-devel wrote:
> procedure TThread.Terminate;
> FTerminated := True;
> Should that not in some way deal with memory barriers? E.g.
> InterlockedExchange or similar?
Very important: InterlockedExchange is not a memory barrier, except on x86.
> And the same for the "Terminated" property, should that have a getter to
> do the same?
> As it stands, afaik a thread could get the "Terminate" flag with an
> unknown delay?
It's not a semaphore/signal, it's just a field. It will never be
instantaneous since it can only have an effect once the target thread
actually tries to read it. Wrapping it in a bunch of synchronisation
primitives will make the whole system slower with no real benefit.
More information about the fpc-devel