devchat-ai / gopool

GoPool is a high-performance, feature-rich, and easy-to-use worker pool library for Golang.
MIT License
187 stars 26 forks source link

WithMinWorkers() doesn't work correctly #7

Closed hbh112233abc closed 1 year ago

hbh112233abc commented 1 year ago
func main() {
    pool := gopool.NewGoPool(
        20,
        gopool.WithMinWorkers(3),
    )
    defer pool.Release()
}

当设置了minWorkers就会出现死锁

fatal error: all goroutines are asleep - deadlock!

原因是Release中的判断:

for len(p.workerStack) != p.minWorkers {
    p.cond.Wait()
}
daniel-hutao commented 1 year ago

感谢指出;我尽快补充更多的单元测试,提升健壮性。

daniel-hutao commented 1 year ago

@hbh112233abc 您好,我已经添加相关测试用例,也修复了一些 bug;minWorker 相关逻辑确实有点问题,不过可能不是在 Release() 中;我马上会 Release 一个新版本,麻烦更新后看下您本地是否还存在问题。

hbh112233abc commented 1 year ago

@hbh112233abc 您好,我已经添加相关测试用例,也修复了一些 bug;minWorker 相关逻辑确实有点问题,不过可能不是在 Release() 中;我马上会 Release 一个新版本,麻烦更新后看下您本地是否还存在问题。

可以了 给你点赞