Home    About me    Publications    Blog    Photo gallery
Some other old good stuff

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Qt Concurrent

Da quando, con una strabiliante azione di marketing, la storica “corsa al GhZ” dei processori si è fermata a favore delle architetture multi-core, uno dei problemi principali che affligge chi sviluppa software è proprio la gestione dei vari “core” presenti sul sistema di riferimento. Fondamentalmente, il problema è che, un’applicazione sviluppata per un’architettura a core singolo, eseguita su di un sistema multi-core finirà per sfruttare solo una piccola parte della potenza di calcolo globalmente disponibile sulla macchina in uso. Il problema affligge naturalmente anche le simulazioni che faccio girare sul mio meraviglioso MacBook Pro. Il computer macina, macina, macina per ore. Ma le statistiche indicano sempre un imbarazzante 50% alla voce “CPU Usage”. Per aggirare il problema, occorre riscrivere in maniera “scalabile” i propri programmi. Operazione, in genere, tutt’altro che agevole. Le Qt che io utilizzo, dal canto loro, offrono un paio di classi (QThread e QThreadStorage) dedicate appositamente alla gestione dei thread. Neppure loro, però, semplicissime da usare. Ergo, un problema che non avrei mai risolto prima di qualche anno? Macchè…

Qt Concurrent

Ieri, a Roma, chiacchierando un po’ dell’argomento con il buon Gianluca Massera (al quale, scrivo a mo di promemoria, ancora “devo una traduzione”), ho scoperto le meraviglie di Qt Concurrent. Di cosa si tratta? E’ presto detto:

Qt Concurrent is a C++ template library for writing multi-threaded applications.

Qt Concurrent provides high-level APIs that makes it possible to write multi-threaded programs withouth using low-level threading primitives such as critcal sections, mutexes or wait conditions.

Programs written with Qt Concurrent automaticallly adjust the number of threads used according to the number of processor cores available. This means that applications written today will continue to scale when deployed on multi-core systems in the future.
[edit]

The library includes functional programming style APIs for for parallel list prosessing, a MapReduce implementation for shared-memory (non-distributed) systems, and classes for managing asynchronous computations in GUI applications.

L’utilizzo di questa libreria sembra veramente di una semplicità assurda. E quello che si ottiene, oltretutto, è perfettamente scalabile al numero di core disponibili. Da provare al più presto. Un altro ottimo motivo per utilizzare le Qt!

Non ci sono ancora commenti. Vuoi essere il primo?

Lascia un commento