Discussione: [C++]GOTO invisibili?
View Single Post
Old 23-09-2008, 20:58   #12
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
La mia applicazione ha 3-4 threads:
-Ogre+logica di gioco
-PhysX
-Lua
-Ogni tanto caricamento delle risorse.

Il thread incriminato è quello del Lua... tuttavia, dato che non lo creo io, e dato che ci comunico tramite uno Stack non gestito da me, non vedo come faccia ad andare fuori sincrono... in tutte le altre occasioni funziona alla perfezione.

Cmq, analizzando meglio il problema, ho notato che esiste un "eco" di chiamata da Lua: la funzione wrapper viene chiamata due volte di seguito, e fra l'altro la seconda chiamata a distanza di millisecondi non funziona... cioè, se tolgo la prima, la seconda non ha alcun effetto.

Sto ancora cercando un'altro KeyListener, che magari continua a chiamare il metodo incriminato, ma non sembra ci sia... non capisco veramente da dove arriva la "chiamata fantasma"

Cmq per rendere il metodo thread safe in maniera rozza ho fatto così:
Codice:
--membri della classe
bool buildingBusy;

--costruttore
buildingBusy = false;

--endDrawing (il metodo chiamato 2 volte)
if( buildingBusy ) return NULL;
else buildinBusy = true;
...
buildingBusy = false;
return o;
Come ho detto prima funziona, ma non mi soddisfa. Questa discrepanza ha l'aria di nascondere un problema ben più "cattivo"... quindi è meglio trovarlo da subito.
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso