chore(poller): add metric to track the worker number

Add metric to track multiple task.
This commit is contained in:
Bo-Yi Wu
2022-11-11 15:00:38 +08:00
committed by Jason Song
parent d1114da299
commit abdb547b1b
3 changed files with 68 additions and 32 deletions

33
poller/metric.go Normal file
View File

@ -0,0 +1,33 @@
package poller
import "sync/atomic"
// Metric interface
type Metric interface {
IncBusyWorker() uint64
DecBusyWorker() uint64
BusyWorkers() uint64
}
var _ Metric = (*metric)(nil)
type metric struct {
busyWorkers uint64
}
// NewMetric for default metric structure
func NewMetric() Metric {
return &metric{}
}
func (m *metric) IncBusyWorker() uint64 {
return atomic.AddUint64(&m.busyWorkers, 1)
}
func (m *metric) DecBusyWorker() uint64 {
return atomic.AddUint64(&m.busyWorkers, ^uint64(0))
}
func (m *metric) BusyWorkers() uint64 {
return atomic.LoadUint64(&m.busyWorkers)
}