You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gosuv/atomic64.go

40 lines
602 B

package main
import "sync/atomic"
type Int64 struct {
v int64
}
func (a *Int64) Get() int64 {
return atomic.LoadInt64(&a.v)
}
func (a *Int64) Set(v int64) {
atomic.StoreInt64(&a.v, v)
}
func (a *Int64) CompareAndSwap(o, n int64) bool {
return atomic.CompareAndSwapInt64(&a.v, o, n)
}
func (a *Int64) Swap(v int64) int64 {
return atomic.SwapInt64(&a.v, v)
}
func (a *Int64) Add(v int64) int64 {
return atomic.AddInt64(&a.v, v)
}
func (a *Int64) Sub(v int64) int64 {
return a.Add(-v)
}
func (a *Int64) Incr() int64 {
return a.Add(1)
}
func (a *Int64) Decr() int64 {
return a.Add(-1)
}