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
Creare agenti facilmente con Azure AI Agent Service
Effettuare il refresh dei dati di una QuickGrid di Blazor
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
.NET Conference Italia 2024
Combinare Container Queries e Media Queries
Loggare le query più lente con Entity Framework
Utilizzare l nesting nativo dei CSS
Creare una libreria CSS universale: Clip-path
Filtering sulle colonne in una QuickGrid di Blazor
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps