Modelli per la pianificazione del lavoro di background preventivo

0

Ecco il problema, spero che la community possa aiutarmi ad analizzare:

Voglio eseguire un insieme di lavori con un lavoratore in background (o diversi). Ogni volta che viene eseguito un lavoro, viene generato un messaggio e un listener sul thread principale riceve il messaggio e memorizza alcuni dati in una cache.

Finora questo sembra semplice, ma ora voglio una pianificazione preventiva dal thread principale, così posso, su richiesta, inviare un messaggio per dare la priorità a un lavoro specifico, in modo che venga eseguito il prima possibile.

Qual è lo schema generale per una soluzione pulita a questo problema?

Per quello che vale, dovrei probabilmente menzionare che sto lavorando con ES2016 e TypeScript, per dare un contesto reale alla mia domanda.

Ecco uno scenario concreto come esempio del problema generale: quando viene avviata la mia app Web, voglio caricare i dati da diverse tabelle indexedDB locali in modo asincrono. Delega questo lavoro a un web worker. Caricherà a turno ciascuna tabella e genererà un messaggio con i dati mentre carica ciascuno di essi. Sul thread principale, un listener riceverà il messaggio e memorizzerà i dati in una cache.

Ma diciamo che l'utente preme un pulsante per visualizzare i dati per una tabella specifica. L'app chiama una funzione che controlla la cache e vede che i dati per quella tabella non sono ancora stati caricati.

In che modo questa funzione attende che i dati di quella tabella siano stati memorizzati nella cache in modo che possa restituire i dati? Ancora più importante, cosa succede se la tabella è programmata per essere caricata per ultima? In che modo questa funzione può inviare un messaggio al web worker per prioritizzare il caricamento di quella tabella specifica in modo che i suoi dati siano disponibili il prima possibile?

    
posta prmph 14.02.2018 - 20:17
fonte

0 risposte