Sobes.tech
Middle+

4 - accetta rapidamente i compiti in arrivo, 5 - restituisce il risultato del compito su richiesta 6 - se non c'è risultato, restituisce lo stato appropriato /* Processore - un servizio che esegue un'operazione lunga e intensiva in risorse. È già implementato Gli errori che restituisce sono esclusivamente legati a dati di input incorretti, sono stabili e richiederli di nuovo è inutile */ type Processor interface { Process([]byte) ([]byte, error) } /* Supponiamo di avere un generatore di identificatori unici (ad esempio UUID). Il generatore garantisce che non ci saranno collisioni */ type ID string // func NewID() ID /* Il pianificatore accetta compiti dai clienti, li mette in coda e li avvia nel processamento. Assicura che non più di 'threads' metodi di processo siano in esecuzione contemporaneamente Permette di verificare lo stato del compito e ottenere il risultato non blocca i metodi pubblici per il processamento */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // logica di inizializzazione return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementare return "" }