uint64.go 439 Bytes
Newer Older
Vladimir Barsukov's avatar
Vladimir Barsukov committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package zatomic

import "sync/atomic"

type UInt64 struct {
	v *atomic.Uint64
}

func NewUInt64() *UInt64 {
	return &UInt64{v: &atomic.Uint64{}}
}

func (i *UInt64) Store(v int) {
	i.v.Store(uint64(v))
}

func (i *UInt64) Add(delta int) uint64 {
	return i.v.Add(uint64(delta))
}

func (i *UInt64) Inc() uint64 {
	return i.Add(1)
}

func (i *UInt64) Dec() uint64 {
	return i.Add(-1)
}

func (i *UInt64) Load() uint64 {
	return i.v.Load()
}