New minor release after complete rewrite.

Brings neat and testable codebase with minimum allocations in mind.
This commit is contained in:
2023-04-07 15:27:44 +01:00
parent 6a8f99f6ef
commit e0913f8824
26 changed files with 1417 additions and 1129 deletions
+30
View File
@@ -0,0 +1,30 @@
package concurrency
type Pool struct {
queue chan struct{}
jobs int
}
func NewPool(size int) *Pool {
if size < 0 {
size = 0
}
return &Pool{
jobs: size,
queue: make(chan struct{}, size),
}
}
func (p *Pool) Enqueue(job func(params ...any), params ...any) {
if p.jobs == 0 {
go job(params...)
return
}
p.queue <- struct{}{}
go func() {
defer func() {
<-p.queue
}()
job(params...)
}()
}