mercoledì 13 febbraio 2019

Multi-Threading

Come si realizza il multithreading in OpenEdge(*)

Progress OpenEdge gestisce il multithreading? No,  Progress AVM è un processo monothread.

In questo primo post illustro quelle che, invece, sono le utilities OpenEdge multi-threaded ed i processi "abili" al multithreading.

- DBTOOL Utility. Tool di diagnostica e report su record format, index space, SQL width, ecc.
- Binary dump e Phase 2 del processo di idxbuild sono stati migliorati per gestire il multi-threading.
- Il processo broker/server per i client ABL (_mprosrv) non è multi-threaded. Può generare più processi  server, ciascuno in grado di servire più client, configurabili tramite i parametri di intermediazione -Mn-Ma del database).
- Il client Progress (_progres, _prowin32) essendo single-thread non permette di progettare applicazioni ABL multi-thread. Una possibilità, a seconda delle esigenze, può essere quella di usare chiamate ad AppServer in modalità asincrona. L'AppServer Broker è un processo java e genera più thread che il sistema operativo può allocare attraverso diverse CPU.Ogni AppServer Agent, essendo un processo _progress, tuttavia, verrà assegnato dal sistema operativo ad una CPU, ma non attraverso più CPU.

* Il presente post tratta della versione OpenEdge 10. Per le versioni successive https://knowledgebase.progress.com/articles/Article/P73663

1 commenti:

Wim van der Ham ha detto...

Ciao Marco!
Non ti ho visto nel webinar della Progress Italy giovedì scorso dove il tuo omonimo Squintani ha parlato della nuova release 12.2. Come avevi già indicato nella nota del tuo blog, nel KB in allegato trovi che dalla 12 il processo server è diventato Multithread!
Con il fatto che, sempre nella 12.2, ci sono i server-side joins, si è raggiunto un notevole aumento di prestazioni!