...
1 package utils
2
3 import "sync"
4
5 type LockedInt struct {
6 sync.Mutex
7 val int
8 }
9
10
11 func (li *LockedInt) Set(val int) int {
12 li.Lock()
13 res := li.val
14 li.val = val
15 li.Unlock()
16 return res
17 }
18
19
20 func (li *LockedInt) Inc() int {
21 li.Lock()
22 li.val = li.val + 1
23 res := li.val
24 li.Unlock()
25 return res
26 }
27
28
29 func (li *LockedInt) Dec() int {
30 li.Lock()
31 li.val = li.val - 1
32 res := li.val
33 li.Unlock()
34 return res
35 }
36 func (li *LockedInt) Value() int {
37 li.Lock()
38 res := li.val
39 li.Unlock()
40 return res
41 }
42
View as plain text