[fpc-devel] ref count types / threadsave question

Benito van der Zander benito at benibela.de
Fri Jan 4 00:11:50 CET 2019


Hi Fpc Developers',

> Nobody is talking about the string content. 


But when they are stored together, that is the same. You can't get one 
without the other.


When core A creates a string to pass to core B, core A writes three 
things: ref count 1, the string content and the incremented ref count 2.

If core B could see stale data after the second write (with ref count 
1), it could also see stale data after the first write (without 
content). Nothing changes on core B between the writes.




> It's only about the reference count right now and that one *can* 
> differ between cores if that isn't correctly handled (even if the 
> string content stays the same). 

Sure one core can read 2 after the other core wrote 1.

I do not see how a core can read 1 after a 2 was written.

Cheers,
Benito

Am 03.01.19 um 14:23 schrieb Sven Barth via fpc-devel:
> Am Do., 3. Jan. 2019, 13:25 hat Benito van der Zander 
> <benito at benibela.de <mailto:benito at benibela.de>> geschrieben:
>
>     Hi,
>
>>
>>
>>     The issue I was talking about is the fact that atomic operations
>>     do function as global memory synchronisation operations across
>>     all cores (at least not on all architectures). If core 1
>>     atomatically increases refcount to two and you "then" load the
>>     same refcount normally (without an atomic read-modify-exchange
>>     oepration) on another core, this other core may still see the old
>>     value. 
>
>     Is that really so?
>
>     The ref count is stored in the same memory block as the string itself.
>
>     If core 2 could not see the new ref count, it could not see what
>     is in the string and thus not use the string for anything .
>
>
> Nobody is talking about the string content. It's only about the 
> reference count right now and that one *can* differ between cores if 
> that isn't correctly handled (even if the string content stays the same).
>
> Regards,
> Sven
>
>
> _______________________________________________
> fpc-devel maillist  -fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190104/2acad028/attachment.html>


More information about the fpc-devel mailing list