domenica, gennaio 27, 2008

Sviluppo "parallelo"

Ormai sono anni che i processori sono a tutti gli effetti dei "multi"processori. Si era iniziato con l'HyperThreding, poi i Dual Core, poi i QuadCore ed avanti così. Ma per gli sviluppatori la domanda è: ma ve ne fate realmente qualcosa di questi oggetti che sono in grado di eseguire più istruzioni in parallelo? Per molti la risposta è: NO! Ed il motivo è molto semplice: le applicazioni Console e Windows Form che sviluppano sono intrinsecamente mono-processo, o meglio mono-thread. Discorso a parte ovviamente per le applicazioni web tipo asp.net: questo effettivamente è un mondo effettivamente multi-thread.
Lo sviluppo parallelo non sempre è applicabile. Anzi sovente la logica è instrinsecamente lineare e non ci sono spazi per parallelizzarla. In altri casi invece questo è possibile. Ma qui iniziano i dolori. Senza un adeguato supporto fornito dal linguaggio/framework è molto oneroso (e tedioso) gestire i vari thread paralleli. Ed è forse per questo che, a meno di situazioni particolari in cui le performance sono fondamentali, si rinuncia allo sviluppo "parallelo" e si rimane sul tranquillo "seriale".
Come ho detto in precedenza, l'hardware è ormai molto avanti. Il software (sviluppo e framework) è ancora un po' indietro. Ma le cose stanno cambiando: un segno è l'uscita come Community Tecnology Preview di Parallel Extensions to .NET. Questa libreria fornisce una serie di estensioni a NET 3.5 per supportare in modo nativo una serie di costutti paralleli. Vedi articolo su MSDN Magazine.

Nessun commento: