[Lazarus] thread safe

Michael Schnell mschnell at lumino.de
Fri Jun 10 14:36:36 CEST 2011


On 06/10/2011 02:18 PM, Mattias Gaertner wrote:
>> E.g. Regarding Objects this is not enough.
> Prove?

Theory: with multiple instances, the same "piece of code" behaves 
differently, according to to the states that are stored internally in an 
instance.

It's not practical to just ignore this as a specification: you now would 
need to say that Objects never are thread safe and by this make any 
object language totally unsuited for threaded application.

It's a lot more helpful to do a more sophisticated definition of 
thread-safety for objects.


Example:

Imagine you create an instance of an object for each thread.

So the same "piece of code" (a function  procedure or property of the 
object) can behave differently regarding which instance is used (here 
which thread is calling it).

e.g. the function accesses just class variables (and local variables). 
Now it is thread safe if in fact each thread uses it's instance; but 
it's not thread safe, if a thread uses another thread's instance.

If it uses global variables it is not thread safe at all.

-Michael




More information about the Lazarus mailing list