[Corsopoc] Programmazione concorrente in C++
Andrea Leofreddi
andrea@lupo.campus.uniroma2.it
09 Feb 2003 22:19:18 +0100
On Sun, 2003-02-09 at 20:15, Mimmik wrote:
> In questo periodo di grandi scontri nella mailing list volevo tornare ad
> argomenti pių tecnici.
> Mi domandavo: č possibile la programmazione concorrente in C++?
ovviamente si (ricordiamo che la jvm e' scritta in c++)
> In Java abbiamo Thread e Runnable... in C++ come si fa?
il C++ in se (ansi c++ '99) non prevede i thread. Effettivamente il
linguaggio non prevede la sincronizzazione dei metodi, e non e'
direttamente cosciente del multithreading. Per avere il multithreading
devi pertanto ricorrere al sistema operativo (Java si permette questi
giochi di integrazione linguaggio di programmazione/thread perche' ha
integrato il linguaggio di programmazione con la propria virtual
machine): Windows ha una graziosa interfaccia sbarazzina, e ti sgancia i
thread come simpatici oggetti Thread, unix, piu' spartano (ma sempre
efficiente), e ha (piu' o meno ovunque) disponibili i POSIX threads
(un'interfaccia in C che ti permette di creare thread). In particolare
in C++ troverai un ambiente multithreading molto piu' scomodo di quello
in java:
- mutua esclusione cruda. Niente pastiglie colorate, niente
synchronized, sezioni critiche a colpi di mutex (e' affar tuo
l'inizializzazione/scoping di questi oggetti)
- morte e distruzione generale (moltissime banali funzioni/oggetti non
sono reentrant e quindi non sono thread safe (per dire una, strtok))
- problemi vari legati alla natura dei thread (su unix per esempio
l'handling dei segnali e' problematico (tutti i thread li pescano))
- crash e funghetti trallalla' (la concorrenza introduce problematiche
enormi, come race condition difficilmente identificabili: il tuo codice
spesso crashera', senza pieta', in maniera pseudo-casuale e, nonostante
un massiccio debug, non saprai il perche')
>
> Grazie
Prego
>
> Mimmo
>
>
> _______________________________________________
> Corsopoc mailing list
> Corsopoc@list.uniroma2.it
> http://list.uniroma2.it/mailman/listinfo/corsopoc
Regards
Andrea Leofreddi
--
Andrea Leofreddi, <andrea@lupo.campus.uniroma2.it>
homepage at http://lupo.campus.uniroma2.it/~andrea