add atomic bool
This commit is contained in:
parent
ecf49fc073
commit
cdaddb8a0e
|
@ -130,3 +130,17 @@ func (s *AtomicString) CompareAndSwap(oldval, newval string) (swqpped bool) {
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AtomicBool int32
|
||||||
|
|
||||||
|
func (b *AtomicBool) Set(v bool) {
|
||||||
|
if v {
|
||||||
|
atomic.StoreInt32((*int32)(b), 1)
|
||||||
|
} else {
|
||||||
|
atomic.StoreInt32((*int32)(b), 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *AtomicBool) Get() bool {
|
||||||
|
return atomic.LoadInt32((*int32)(i)) == 1
|
||||||
|
}
|
||||||
|
|
|
@ -29,4 +29,21 @@ func TestAtomicString(t *testing.T) {
|
||||||
if s.Get() != "c" {
|
if s.Get() != "c" {
|
||||||
t.Errorf("want c, got %s", s.Get())
|
t.Errorf("want c, got %s", s.Get())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var b AtomicBool
|
||||||
|
if b.Get() != false {
|
||||||
|
t.Fatal("must false")
|
||||||
|
}
|
||||||
|
|
||||||
|
b.Set(true)
|
||||||
|
|
||||||
|
if b.Get() != true {
|
||||||
|
t.Fatal("must true")
|
||||||
|
}
|
||||||
|
|
||||||
|
b.Set(false)
|
||||||
|
|
||||||
|
if b.Get() != false {
|
||||||
|
t.Fatal("must false")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue