Forse dico una castronata, ma se stai usando il multithreading, lo strano comportamento può dipendere dal fatto che devi sincronizzare l'accesso alla getchar() visto che legge un carattere dallo standard input (in questo caso è la tastiera) che è singolo.