package worker type Scheduler struct { pool chan any } func NewScheduler(count uint) *Scheduler { return &Scheduler{ pool: make(chan any, count), } } func (self *Scheduler) Take() { self.pool <- nil } func (self *Scheduler) Return() { <-self.pool }