go-watch-webp/module/pool/pool.go

41 lines
443 B
Go

package pool
import "sync"
// Pool -
type Pool struct {
q chan bool
wg *sync.WaitGroup
}
// NewPool -
func NewPool(size int) *Pool {
if size < 1 {
size = 1
}
p := &Pool{
q: make(chan bool, size),
wg: &sync.WaitGroup{},
}
return p
}
// Add new queue work
func (p *Pool) Add() {
p.q <- true
p.wg.Add(1)
}
// Done finish work
func (p *Pool) Done() {
<-p.q
p.wg.Done()
}
// Wait -
func (p *Pool) Wait() {
p.wg.Wait()
}