[Python-Dev] Re: marking shared-ness
Christian Tismer
tismer@tismer.com
Wed, 19 Apr 2000 23:25:45 +0200
Greg Stein wrote:
>
> On Wed, 19 Apr 2000, Christian Tismer wrote:
> >...
> > Too bad that we don't have incref/decref as methods.
>
> This would probably impose more overhead than some of the atomic inc/dec
> mechanisms.
>
> > The possible mutables which have to be protected could
>
> Non-mutable objects must be protected, too. An integer can be shared just
> as easily as a list.
Uhh, right. Everything is mutable, since me mutate the refcount :-(
...
> Ah. Neat. "Automatic marking of shared-ness"
>
> Could work. That initial test for the thread id could be expensive,
> though. What is the overhead of getting the current thread id?
Zero if we cache it in the thread state.
> [ ... thinking about the code ... ]
>
> Nope. Won't work at all.
@#$%§!!-| yes-you-are-right - gnnn!
> There is a race condition when an object "becomes shared".
>
> DECREF:
> if ( object is not shared )
> /* whoops! it just became shared! */
> --(op)->ob_refcnt;
> else
> atomic_decrement(op)
>
> To prevent the race, you'd need an interlock which is more expensive than
> an atomic decrement.
Really, sad but true.
Are atomic decrements really so cheap, meaning "are they mapped
to the atomic dec opcode"?
Then this is all ok IMHO.
ciao - chris
--
Christian Tismer :^) <mailto:tismer@appliedbiometrics.com>
Applied Biometrics GmbH : Have a break! Take a ride on Python's
Kaunstr. 26 : *Starship* http://starship.python.net
14163 Berlin : PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF
where do you want to jump today? http://www.stackless.com