Subj : Re: full-blown experiential smr-based reference counted pointer impl... To : comp.programming.threads From : Joe Seigh Date : Fri Apr 01 2005 07:40 am On Fri, 1 Apr 2005 02:26:38 -0800, Chris Thomasson <_no_damn_spam_cristom@_no_damn_comcast.net_spam> wrote: >> You also need a release ( load/store, store/store) barrier before dropping >> the hazard pointer reference (setting it to zero). > > Yeah. Don't you basically need this for any sort of lock-free collector > schema? > > Lets take a generic proxy gc for instance... > > > // Acquire Proxy > grab proxy reference > ( store/load + store/store ) > > > // inside gc region > > > // Release Proxy > ( load/store + store/store ) > drop proxy reference > > > acquire/release semantics are used to keep stuff contained in the garbage > collected region... > > > Yes. Though with classical RCU the quiesent states aren't so near the critical regions and the membars are around the quiesent state itself, so they're not near the critical regions either. But the RCU implementation I did uses membars like your example shows. The atomic_ptr proxy doesn't since atomic_ptr has acquire and release semantics built in. -- Joe Seigh .