In uno script precedente abbiamo visto come utilizzare i webworkers per eseguire uno script in background: https://www.html5italia.com/script/41/Usare-Web-Workers-Eseguire-Script-Background.aspx
Questa tecnica prevede la scrittura di uno script separato da eseguire in un altro thread, questo implica un certo isolamento delle funzionalità dello script che impedisce di condividere il codice presente nello script principale.
Parallel.js consente di semplificare la scrittura di applicazioni che prevedono elaborazioni multicore o in parallelo, fornendo un livello di astrazione semplificato.
Di seguito un esempio di utilizzo:
var singleUOW = function (data) { //TODO: my processing... return result; }; //Eseguo l'elaborazione in un thread separato var res = Parallel.spawn(singleUOW, 'sample data'); //Recupero il risultato ad elaborazione terminata e lo scrivo nella console r.fetch(function (result) { console.log(result); });
Questa libreria implementa anche l'algoritmo MapReduce (http://en.wikipedia.org/wiki/MapReduce) che ben si presta ad elaborare notevoli moli di dati, ricorrendo ad una ripartizione del carico di elaborazione su thread differenti i cui risultati vengono aggregati a fine dell'elaborazione.
var singleUOW = function (data) { //TODO: my processing... return result; }; var reduce = function (a, b) { return a+b; }; //Eseguo l'elaborazione su più thread var d = Parallel.mapreduce(singleUOW, reduce, ['mydata1','mydata2','mydata3','mydata4','mydata5']); //Recupero il risultato ad elaborazione terminata e lo scrivo nella console r.fetch(function (result) { console.log(result); });
Per maggiori dettagli sulle funzionalità rimandiamo al sito di Parallel.js: http://adambom.github.com/parallel.js/
La specifica completa dei webWorkers, su cui si basa la libreria Parallel.js, è disponibile qui: http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare un KeyedService di default in ASP.NET Core 8
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Evitare il flickering dei componenti nel prerender di Blazor 8
Usare una container image come runner di GitHub Actions
Usare il colore CSS per migliorare lo stile della pagina
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Ottenere un token di accesso per una GitHub App
Gestione degli stili CSS con le regole @layer
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Utilizzare il trigger SQL con le Azure Function
Creare una libreria CSS universale: Clip-path
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub