pond
pond copied to clipboard
Return `chan struct{}` from pool.Stop() to give a better control over cleanup operations.
Currently, when calling pool.Stop(), there's no immediate way to know when the pool has completely halted its operations.
By adding a chan struct{} return type to pool.Stop(), users can receive a signal indicating when the pool has stopped, enabling better management of resources and cleanup tasks.
This enhancement would help when multiple concurrent cleanup tasks need to be executed within a predefined timeframe.
ctx, cancel := context.WithTimeout(context.Background(), 5 * time.Second)
defer cancel()
poolStopped := pool.Stop()
otherStopped := other.Stop()
select {
case <-poolStopped:
case <-ctx.Done():
log.Error("Worker pool did not stop gracefully")
}
select {
case <-otherStopped:
case <-ctx.Done():
log.Error("other did not stop gracefully")
}
Let me know if you think that would be a good addition, and if so, I can create a pull request for it.