mirror of
https://gitea.com/gitea/act_runner.git
synced 2025-06-20 13:27:58 +02:00
chore(poller): add metric to track the worker number
Add metric to track multiple task.
This commit is contained in:
33
poller/metric.go
Normal file
33
poller/metric.go
Normal 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)
|
||||
}
|
Reference in New Issue
Block a user