Quote:
|
Originariamente inviato da checo
scusa l'ignoranza ma ci sono applicazioni singole che richiedono o sono ottimizzate per hypertreading e allo stesso tempo non lo sono per un dual cpu?
|
beh sì non sono da escludere
dipende da che funzioni si usano per implementare i thread nel proprio programma, e quindi dall' implementazione della thread library...
come vedevo poco tempo fa esistono thread library (e il discorso vale SPECIALMENTE sotto linux perchè sotto win le mfc la fanno parecchio da padrone) che esplicitamente eseguono e sincronizzano i thread su una stessa cpu, serializzandoli in un unico processo... questo perchè i thread verrebbero gestiti internamente, dalla library con cui è linkato il processo a cui appartengono, e non dal kernel, il quale vede il processo come contenente un unico thread
ci si può chiedere quale sia l' utilità di sviluppare codice multithreaded qualora si sia a conoscenza di una limitazione di questo tipo...
intanto questo diventa limitante solo per sistemi multiprocessore, (ma anche su questi il kernel può comunque ripartire i processi -corrispondenti alle diverse applicazioni- tra le varie cpu presenti), perchè su sistemi uniprocessore, tutti i thread in memoria verrebbero comunque eseguiti dall' unica cpu del sistema
inoltre la programmazione multithread può comunque aiutare a mascherare le latenze e migliorare l' efficienza dell' utente ... i tempi di attesa percepiti sono meno influenti e fastidiosi se l' utente vede di poter fare "altro" nel frattempo invece di dover attendere o di restare bloccato in una finestra modale...