pond icon indicating copy to clipboard operation
pond copied to clipboard

Return `chan struct{}` from pool.Stop() to give a better control over cleanup operations.

Open CorentinClabaut opened this issue 1 year ago • 0 comments

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.

CorentinClabaut avatar Jun 07 '24 19:06 CorentinClabaut