type Job … type Scheduler … type fifo … // NewFIFOScheduler returns a Scheduler that schedules jobs in FIFO // order sequentially func NewFIFOScheduler() Scheduler { … } // Schedule schedules a job that will be ran in FIFO order sequentially. func (f *fifo) Schedule(j Job) { … } func (f *fifo) Pending() int { … } func (f *fifo) Scheduled() int { … } func (f *fifo) Finished() int { … } func (f *fifo) WaitFinish(n int) { … } // Stop stops the scheduler and cancels all pending jobs. func (f *fifo) Stop() { … } func (f *fifo) run() { … }