Subj : Re: full-blown experiential smr-based reference counted pointer impl... To : comp.programming.threads From : Joe Seigh Date : Fri Apr 01 2005 01:28 pm On Fri, 01 Apr 2005 12:16:04 +0200, Alexander Terekhov wrote: > > Chris Thomasson wrote: > [...] >> // Acquire Hazard >> load target >> loop: >> store target into hazard >> ( store/load ) >> load target > /* >> ( store/load + store/store ) > */ >> compare target with hazard, goto loop if non-equal > (load/load + load/store) // cc/dd hints aside > > in probably better. You don't need to have that second fence inside > loop. > >> >> // inside gc region wrt target >> >> // Release Hazard >> ( load/store + store/store ) >> store null into hazard >> >> Is that about it? > > You also need "acquire" on cleanup/object destruction. > That would be in the polling thread. You need "acquire" on any object destruction if it's not provided by any synchronization primatives being used. Naturally since this is one of the things I already know about, I seem to have managed to leave it out of RCU. :) Also you need release semantics on any stores into shared pointers being guarded by SMR. Did we leave anything out? -- Joe Seigh .