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
Utilizzare WhenEach per processare i risultati di una lista di task
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Controllare la velocità di spostamento su una pagina HTML
Creare comandi nella dashboard .NET Aspire
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Conoscere il rendering Server o WebAssembly a runtime in Blazor
DevSecOps per .NET: dalla teoria alla pratica
Montare Azure Blob Storage su Linux con BlobFuse2
Potenziare la ricerca su Cosmos DB con Full Text Search
Selettore CSS :has() e i suoi casi d'uso avanzati
Implementare il throttle in JavaScript
Mischiare codice server side e client side in una query LINQ con Entity Framework
I più letti di oggi
- Personalizzare le pagine di errore su Azure App Service
- Certificati gratuiti e con rinnovo automatico con Azure App Service
- Utilizzare Locust con Azure Load Testing
- Utilizzare WebJobs su Linux con Azure App Service
- The Agentic Day - Milano
- Moonlight 2.0 in beta, con un po' di Silverlight 3.0 per Linux
- Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali


