PDA

View Full Version : JVM e quad core


rizzi
03-12-2008, 00:18
C'è un modo, oltre all'utilizzo dei thread, per sfruttare il multicore tramite la JAva Virtual Machine?

Grazie

Oceans11
03-12-2008, 10:34
Dipende dal sistema operativo. Ogni sistema operativo mappa un thread della jvm in uno o più thread nativi.
Quindi se non usi esplicitamente il multithreading, visto che ogni programma che esegui almeno un thread java ce l'ha, se il S.O. lo mappa in un unico thread nativo lavori per forza di cose su un core, se li mappa in più thread...chissà :rolleyes: !

^TiGeRShArK^
03-12-2008, 15:00
non si possono sfruttare + core per effettuare dei calcoli all'interno del tuo software senza utilizzare dei thread o dei runnable con java...
Col C# e PLINQ basta aggiungere la chiamata al metodo AsParallel() :fagiano:

Oceans11
03-12-2008, 15:14
non si possono sfruttare + core per effettuare dei calcoli all'interno del tuo software senza utilizzare dei thread o dei runnable con java...

@^TiGeRShArK^: neanche nel caso in cui il sistema operativo mappi il thread in 2 o più thread nativi? Perchè?

^TiGeRShArK^
03-12-2008, 15:25
@^TiGeRShArK^: neanche nel caso in cui il sistema operativo mappi il thread in 2 o più thread nativi? Perchè?

Perchè un singolo thread della JVM è appunto un singolo thread del sistema operativo :p
Il thread è l'unità + piccola per il parallelismo, dato che in un processo possono girare + thread.
La divisione automatica dei thread però è impossibile da effettuare dato che si devono gestire le dipendenze e le interazioni tra thread.
Infatti il C# lo può fare solo perchè utilizza dei costrutti di programmazione funzionale e in modo particolare le funzioni pure che non modificano alcun dato che non sia quello locale alla funzione stessa.

Oceans11
03-12-2008, 15:33
Hai perfettamente ragione, mi ricordavo male io:

N thread a livello utente corrispondono (o possono corrispondere) ad M thread a livello kernel con N >= M >= 1.

Grazie tiger

rizzi
03-12-2008, 19:12
Grazie delle considerazioni :)