[Lazarus] Synchronize problem in linux

Giuliano Colla giuliano.colla at fastwebnet.it
Wed May 25 14:22:31 CEST 2011


michael.vancanneyt at wisa.be ha scritto:
>
>
> On Wed, 25 May 2011, Vincent Snijders wrote:
>
>> 2011/5/25  <michael.vancanneyt at wisa.be>:
>>>>> No. You should use a TMultiReadExclusiveWriteSynchronizer object to
>>>>> synchronize access to your object, or use a critical section.
>>>>
>>>> Ehm, he made sure that only one thread accesses the TStringList at a
>>>> time.
>>>
>>> To me, this is not obvious from his mail ?
>>
>> I thought it was obvious from:
>> "The logic of the application itself made it sure that there was no
>> conflict whatsoever. "
>>
>> But maybe that was not not what Giuliano meant by "no conflict".
>
> This is what was not clear to me...
>
> If no conflict can mean 'it adds only', then there is a conflict at a 
> lower
> level, because adding can mean a reallocation of the array of strings.
>
The full picture is:
1) The main thread creates the String List, and doesn't touch it any more.
2) The other thread is activated and it is the only one which appends 
strings to the list.
3) When the other thread is terminated, the main thread processes the list.

I would expect that whatever activity occurs as an effect of appending 
strings (such as reallocating the array) would occur in the context of 
the thread performing the action, that all pertinent information is 
stored in fields of the object itself, and that the main thread is never 
involved.  Am I wrong on this aspect?

Giuliano





More information about the Lazarus mailing list