| 12345678910111213141516171819202122232425262728293031323334353637 |
- package atomic
- import "sync/atomic"
- type AtomicInt32 int32
- // NewAtomicInt32 creates a new atomic int32 instance.
- func NewAtomicInt32(value int32) *AtomicInt32 {
- ai := new(AtomicInt32)
- ai.Set(value)
- return ai
- }
- // Loads the int32 value atomically
- func (ai *AtomicInt32) Get() int32 {
- return atomic.LoadInt32((*int32)(ai))
- }
- // Sets the int32 value atomically
- func (ai *AtomicInt32) Set(value int32) {
- atomic.StoreInt32((*int32)(ai), value)
- }
- // Increments the atomic int and returns the new value
- func (ai *AtomicInt32) Increment() int32 {
- return atomic.AddInt32((*int32)(ai), 1)
- }
- // Decrements the atomint int and returns the new value
- func (ai *AtomicInt32) Decrement() int32 {
- return atomic.AddInt32((*int32)(ai), -1)
- }
- // CompareAndSet sets value to new if current is equal to the current value
- func (ai *AtomicInt32) CompareAndSet(current, new int32) bool {
- return atomic.CompareAndSwapInt32((*int32)(ai), current, new)
- }
|