30 lines
371 B
Go
30 lines
371 B
Go
package util
|
|
|
|
import "sync"
|
|
|
|
type Counter struct {
|
|
count uint
|
|
mutex sync.RWMutex
|
|
}
|
|
|
|
func (c *Counter) Get() uint {
|
|
c.mutex.RLock()
|
|
defer c.mutex.RUnlock()
|
|
|
|
return c.count
|
|
}
|
|
|
|
func (c *Counter) Reset() {
|
|
c.mutex.Lock()
|
|
defer c.mutex.Unlock()
|
|
|
|
c.count = 0
|
|
}
|
|
|
|
func (c *Counter) Increment() uint {
|
|
c.mutex.Lock()
|
|
defer c.mutex.Unlock()
|
|
|
|
c.count++
|
|
return c.count
|
|
}
|