pool.go 770 B

1234567891011121314151617181920212223242526272829303132333435
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package worker // import "miniflux.app/v2/internal/worker"
  4. import (
  5. "miniflux.app/v2/internal/model"
  6. "miniflux.app/v2/internal/storage"
  7. )
  8. // Pool handles a pool of workers.
  9. type Pool struct {
  10. queue chan model.Job
  11. }
  12. // Push send a list of jobs to the queue.
  13. func (p *Pool) Push(jobs model.JobList) {
  14. for _, job := range jobs {
  15. p.queue <- job
  16. }
  17. }
  18. // NewPool creates a pool of background workers.
  19. func NewPool(store *storage.Storage, nbWorkers int) *Pool {
  20. workerPool := &Pool{
  21. queue: make(chan model.Job),
  22. }
  23. for i := range nbWorkers {
  24. worker := &worker{id: i, store: store}
  25. go worker.Run(workerPool.queue)
  26. }
  27. return workerPool
  28. }