Conversation
n-canter
left a comment
There was a problem hiding this comment.
добавь circleci раз уж проект на похвастаться
worker.go
Outdated
| for { | ||
| select { | ||
| case t := <-w.tasks: | ||
| if t != nil { |
There was a problem hiding this comment.
эти 4 строчки лучше обернуть в отдельнюу функцию типа runTask(t TaskFn) ...
| return | ||
| case <-w.quit: | ||
| return | ||
| case t := <-w.tasks: |
worker.go
Outdated
|
|
||
| t() | ||
|
|
||
| select { |
There was a problem hiding this comment.
это можно удалить, внутри цикла такая же проверка
worker.go
Outdated
| } | ||
| } | ||
|
|
||
| type additionalWorker struct { |
There was a problem hiding this comment.
я бы сделал type additionalWorker worker
| default: | ||
| } | ||
|
|
||
| ticker := time.NewTicker(w.conf.ttl) |
There was a problem hiding this comment.
вообще если уж заморачиваться над производительностью, то таймеры лучше запулить, они много жрут, и похоже тут тебе нужен не ticker, а timer. NewTimer() или time.After()
| } | ||
|
|
||
| func (w *worker) run() { | ||
| for { |
There was a problem hiding this comment.
если в Shutdown закрывать канал tasks, то тут можно просто писать
for t := range w.tasks{
...
}
| return nil | ||
| } | ||
|
|
||
| if p.ticker.C == nil { |
| return ErrPoolFull | ||
| } | ||
|
|
||
| select { |
There was a problem hiding this comment.
а это зачем?
типа если таск не успел зашедулиться за какое-то время то дронуть его? если логика такая, то таймер нужно в предыдущий селект написать и нужно рассчитывать не на тикер, а начинать время отсчитывать перед входом в селект
pool.go
Outdated
| atomic.AddInt32(&p.realQueueSize, -1) | ||
|
|
||
| p.mu.Lock() | ||
| p.additionalWorkersAvailable-- |
There was a problem hiding this comment.
ты на один запуска extraworker делаешь два декремента счетчика и один инкремент
| } | ||
|
|
||
| uAvail := atomic.LoadInt32(&p.unstoppableWorkersAvailable) | ||
| if uAvail == 0 && p.spawnExtraWorker(t) == nil { |
There was a problem hiding this comment.
тут тоже есть рэйс логический, но на него наверно можно забить
1180318 to
34d4d26
Compare
39c87f6 to
54ff7ae
Compare
4523cfd to
534d6c3
Compare
[pool] remove spawning mutex
Some test commit
[pool] add AddContext functionality without tests
extract Pool interface
No description provided.