github.com/KarpelesLab/weak@v0.1.1/state.go (about) 1 package weak 2 3 import "sync/atomic" 4 5 type refState uint32 6 7 const ( 8 refDEAD refState = 0 9 refALIVE refState = 1 10 refINUSE refState = 2 11 ) 12 13 func (wrS *refState) CaS(old, new refState) bool { 14 return atomic.CompareAndSwapUint32((*uint32)(wrS), uint32(old), uint32(new)) 15 } 16 17 func (wrS *refState) Set(v refState) { 18 atomic.StoreUint32((*uint32)(wrS), uint32(v)) 19 } 20 21 func (wrS *refState) Get() refState { 22 return refState(atomic.LoadUint32((*uint32)(wrS))) 23 }