GoCollections/lang/atomic/Bool.go

38 lines
474 B
Go

package atomic
type Bool struct {
i Int32
}
func (v *Bool) Load() (val bool) {
return v.i.Load() != 0
}
func (v *Bool) Store(val bool) {
if val {
v.i.Store(1)
} else {
v.i.Store(0)
}
}
func (v *Bool) Swap(new bool) (old bool) {
n := int32(0)
if new {
n = 1
}
return v.i.Swap(n) != 0
}
func (v *Bool) CompareAndSwap(old, new bool) (swapped bool) {
o := int32(0)
if old {
o = 1
}
n := int32(0)
if new {
n = 1
}
return v.i.CompareAndSwap(o, n)
}