07-05-2011, 07:11 PM
Quando si programma si "sceglie" se far fare più operazioni contemporaneamente (un operazione per ogni thread) oppure se eseguire un operazione alla volta.
Nel secondo caso, anche nei processori multi-core, tutte le operazioni vengono eseguite su un solo core. Nel primo caso invece è possibile sfruttare anche gli altri core, ma è il programmatore che decide quale parte del codice viene eseguita da un core e quale da un altro (e questo complica notevolmente la stesura del programma).
Ogni core ha minimo un thread, ma può averne anche più di uno, quindi si può sfruttare questo tipo di programmazione anche sui single core, tuttavia l'incremento di prestazioni non è così netto come sui processori multi-core (e non è sempre detto che ci sia).
Bisogna fare attenzione però, un programma single-thread gira su ogni processore, un programma multi-thread non gira sui processori single-core + single-thread (oppure se il numero di thread totali è inferiore al numero di thread utilizzati dal programma).
multithreading
In questo caso se io ho un processore single-core con 3GHz di clock e tu un proessore multi-core con 2GHz di clock, il programma gira più velocemente da me.
Nel secondo caso, anche nei processori multi-core, tutte le operazioni vengono eseguite su un solo core. Nel primo caso invece è possibile sfruttare anche gli altri core, ma è il programmatore che decide quale parte del codice viene eseguita da un core e quale da un altro (e questo complica notevolmente la stesura del programma).
Ogni core ha minimo un thread, ma può averne anche più di uno, quindi si può sfruttare questo tipo di programmazione anche sui single core, tuttavia l'incremento di prestazioni non è così netto come sui processori multi-core (e non è sempre detto che ci sia).
Bisogna fare attenzione però, un programma single-thread gira su ogni processore, un programma multi-thread non gira sui processori single-core + single-thread (oppure se il numero di thread totali è inferiore al numero di thread utilizzati dal programma).
multithreading
In questo caso se io ho un processore single-core con 3GHz di clock e tu un proessore multi-core con 2GHz di clock, il programma gira più velocemente da me.