Salve,
questa getchar si comporta in modo molto molto molto anomalo. In pratica è non bloccante anche se io non ho fatto nulla per far si che lo fosse..
Ho provato pure a mettere fflush(stdin) all'inizio ma niente da fare 
codice:
/* Freccia sinsitra */
#define SINISTRA 68
/* Freccia destra */
#define DESTRA 67
/* Tasto per uscire dal gioco*/
#define TASTO_USCITA 113
//fflush(stdin);
c=getchar();
//if (c==0) c=getchar();
switch(c)
{
case TASTO_USCITA:
/*scrivi sul buffer (accedendo tramite l'opportuno mutex e verificando se vi
siano posizioni disponibili per la scrittura)relativo alla comunicazione con
controllo i dati che indicano che il giocatore ha scelto di uscire dal
gioco*/
pos_niente.tipo = USCITA;
in_esecuzione = false;/*esci dal ciclo esterno e quindi fai finire il thread*/
break;
/*se si preme la freccia sinistra la nave si sposta a sinistra*/
case SINISTRA:
/*se la nave è in una posizione dello schermo dove può stare*/
if(pos_nave.x > DISTANZA_DAI_LATI)
pos_nave.x -= SPOSTAMENTO_NAVE; /*sposta a sinistra la nave*/
scrivi_su_buffer(pos_nave);
break;
/*se si preme la freccia destra la nave si sposta a destra*/
case DESTRA:
/*se la nave è in una posizione dello schermo dove può stare*/
if(pos_nave.x < MAXX-DISTANZA_DAI_LATI)
pos_nave.x += SPOSTAMENTO_NAVE;/*sposta a destra la nave*/
scrivi_su_buffer(pos_nave);
break;
//default:
//sleep(1);
//pos_nave.x -= SPOSTAMENTO_NAVE;
}
Qualcuno ha idea da cosa possa dipendere?