Не больше 4 CPU-bound задач параллельно, с переживанием рестарта

ЗадачаSenior45 минпроверка — Спринтнапиши код10-t033

Задачи CPU-bound прилетают потоком, обрабатывать одновременно нужно не больше 4. Клиенту сразу возвращается UUID, по которому можно узнать статус. Если сервис упал на середине, после перезапуска незавершённые задачи всё равно должны довыполниться: если задача дошла, она будет обработана. Даны интерфейсы Processor, Storage и пустая функция; интерфейсы можно менять.

main.gogo
1package main2 3type Processor interface {4	Process(taskID string, data []byte) ([]byte, error)5}6 7type Storage interface {8	SaveData(taskID string, result []byte) error9	GetData(taskID string) (Job, error)10}11 12type Job struct {13	ID     string14	Input  []byte15	Result []byte16	Error  string17}18 19type jobManager struct {20	processor Processor21	storage   Storage22}23 24func NewScheduler() {25}
⌘ Enter — проверить