22 lines
485 B
Go
22 lines
485 B
Go
|
package ratecounter
|
||
|
|
||
|
import "sync/atomic"
|
||
|
|
||
|
// A Counter is a thread-safe counter implementation
|
||
|
type Counter int64
|
||
|
|
||
|
// Incr method increments the counter by some value
|
||
|
func (c *Counter) Incr(val int64) {
|
||
|
atomic.AddInt64((*int64)(c), val)
|
||
|
}
|
||
|
|
||
|
// Reset method resets the counter's value to zero
|
||
|
func (c *Counter) Reset() {
|
||
|
atomic.StoreInt64((*int64)(c), 0)
|
||
|
}
|
||
|
|
||
|
// Value method returns the counter's current value
|
||
|
func (c *Counter) Value() int64 {
|
||
|
return atomic.LoadInt64((*int64)(c))
|
||
|
}
|