func New() Queue {
	return &fifo{
		workers:   map[*worker]struct{}{},
		running:   map[string]*entry{},
		pending:   list.New(),
		extension: time.Minute * 10,
	}
}
New returns a new fifo queue.
package queue
import (
	"container/list"
	"context"
	"log"
	"runtime"
	"sync"
	"time"
)
type entry struct {
	item     *Task
	done     chan bool
	retry    int
	error    error
	deadline time.Time
}
type worker struct {
	filter  Filter
	channel chan *Task
}
type fifo struct {
	sync.Mutex
	workers   map[*worker]struct{}
	running   map[string]*entry
	pending   *list.List
	extension time.Duration
}