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 alias per tipi generici e tuple in C#
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Inizializzare i container in Azure Container Apps
Sfruttare lo streaming di una chiamata Http da Blazor
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Determinare lo stato di un pod in Kubernetes
Migrare una service connection a workload identity federation in Azure DevOps
Criptare la comunicazione con mTLS in Azure Container Apps
Evitare la script injection nelle GitHub Actions
Routing statico e PreRendering in una Blazor Web App
Eseguire una GroupBy per entity in Entity Framework
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
I più letti di oggi
- Elencare gli utenti di un dominio NT con ADSI
- Creare un messaggio di posta in diversi formati con ASP.NET 2.0
- Utilizzare SQL e #linq per eseguire una query con #entityframework Core https://aspit.co/bfv di @sm15455 #efcore1
- Utilizzare il metodo reduce in #javascript https://aspit.co/ccc di @morwalpiz
- Disponibile il codice sorgente di ASP.NET MVC
- rilasciati nuovi template per la #aspnet web pages. funzionano anche con #webmatrix: http://u.aspitalia.com/lu