[dmd-concurrency] synchronized, shared, and regular methods inside the same class

Sean Kelly sean at invisibleduck.org
Thu Jan 7 06:42:00 PST 2010


The real address in already loaded to a temp var, so mo worries there.

Sent from my iPhone

On Jan 6, 2010, at 11:28 PM, Kevin Bealer <kevinbealer at gmail.com> wrote:

> On Wed, Jan 6, 2010 at 3:09 PM, Sean Kelly <kelly.sean at apple.com>  
> wrote:
> On Jan 6, 2010, at 11:52 AM, Sean Kelly wrote:
> >
> > In cases 1 and 2, all we really need to worry about is the  
> assignment to x.  On recent x86 we should be able to use 8 byte CAS  
> to do it in one shot, but on other architectures the algorithm seems  
> more complicated.  I'd need to poke around to see if there's a  
> published algorithm for updating two values together, but here's a  
> shot at it that uses a special value assigned to the array pointer  
> as a sentinel
>
> I just thought of a better approach.  Simply set the '1' bit of the  
> pointer to indicate that an update is taking place, since it really  
> will never be set under normal circumstances.
> _______________________________________________
> dmd-concurrency mailing list
> dmd-concurrency at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-concurrency
>
> But be sure to tell the GC that pointers can now look like (ptr % 4  
> == 1) as well as (ptr % 4 == 0).  Otherwise a conservative GC might  
> toss your object.
>
> Kevin
>
> _______________________________________________
> dmd-concurrency mailing list
> dmd-concurrency at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-concurrency
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-concurrency/attachments/20100107/03fec7bb/attachment.htm>


More information about the dmd-concurrency mailing list