I have implemented an experimental reference counted pointer C api based on SMR. I also includedtwo extremely quick and dirty atomic C++ smart pointer classes that are based on the reference count api. Its basically just a proof of concept. There is a MSVC++ 6.0 workspace and two Dev-C++ projects included, so you can buildAppCore on Windowsright away. The projects build the appcore.dll in the c:/winnt/system32 directory, so you may need to change this to fit your needs:
The smr atomic pointer has an expensive (store/load) before the reference count can even be incremented. So, its a fairly costly when you load a shared pointer into a local pointer. You would not want to use this for everything.
I noticed that I was not aligning the per-thread hazard pointer data-structures on separate cache-lines!!! This is not a bug, it is just a fairly major performance issue... You should probably re-download: