PDA

View Full Version : [C++] Processore Hyper Threading


Zelig
17-03-2005, 09:11
Ciao,
ho un problema con un programma in C++ Builder.
Praticamente il mio programma usa un thread e finchè lo uso su una macchina monoprocessore tutto funziona alla perfezione, ma quando lo metto su una macchina con processore Hyper Threading (che simula 2 processori) il programma sembra che accavalli le operazioni.
Ho provato a togliere il threads ma nulla, ho provato a gestire con i semafori, stessa cosa.

Avete qualche suggerimento???

tglman
17-03-2005, 09:50
Forse il problema sta sulla gestione multiprocessore, cioè il corsore che indica le operazioni che deve svolgere un processore, a lo stesso valore su entrambi i processori e questo porta ad eseguire due volte la stesse operazioni

Forse non sono un esperto in multiprocessore..
Ciao.

Zelig
17-03-2005, 10:12
Per i test che ho fatto sembra essere quello che dici, cioè che venga svolta 2 volte la stessa operazione.

Quindi se il problema è questo il problema è della macchina non del mio programma, giusto?

Oppure devo fare io qualcosa nel programma per evitare che il cursore
delle oprazioni punti alla stessa operazione?

Tu hai una soluzione che posso provare?

Zelig
17-03-2005, 13:49
Ho scoperto che il C++ builder compila di default in multithread,
sapete come fare per compilare in single thread?

ciao

cionci
17-03-2005, 18:01
Se tu crei un thread la tua applicazione è già multithread...
Il problema è sicuramente da ricercarsi nella gestione dei dati fra i due thread...hai utilizzato strutture di sincronizzazione per accedere alle variabili lette/scritti da entrambi i thread ?

Zelig
18-03-2005, 08:41
Originariamente inviato da cionci
Se tu crei un thread la tua applicazione è già multithread...
Il problema è sicuramente da ricercarsi nella gestione dei dati fra i due thread...hai utilizzato strutture di sincronizzazione per accedere alle variabili lette/scritti da entrambi i thread ?


Ma io ho anche tolto il thread dal programma e il problema rimane, quindi non penso sia dovuto ad una errata gestione dei threads.