[Lazarus] Threads

Hans-Peter Diettrich DrDiettrich1 at aol.com
Fri Mar 23 16:15:56 CET 2012

Antonio Fortuny schrieb:

>>> 5. all useful code a thread needs should be encapsultated into a 
>>> TObject descendant and instantiated within the thread's space.
>> This can all be implemented in the derived TThread class.
> So, building an object around this utility code does not enlarge thread 
> safety ?

Not really. Thread safe code must not access global variables, neither 
directly nor indirectly in called subroutines. The latter cannot be 
assured by wrapping the code in a class. See also:

>>> 6. all methods defined in the thread's definition, aprat from the 
>>> EXECUTE procedure (obvious !), run into the  thread creator space 
>>> (the one which instantiates the thread, aka does something like 
>>> wThread := TMyThread.Create (False) )
>> Every procedure or method runs in the context of its *caller*. 
>> Everything called from the thread's Execute method executes in the 
>> thread context (stack, threadvars).
> Sounds very clear. Big idea using few words. I appeciate.



More information about the Lazarus mailing list