Si in effetti se mi fossero bastati i thread sarebbe stata la soluzione più corretta... ma siccome lavoro con le SDL, le risorse come la Video.Surface vengono usate da più thread contemporaneamente, in lettura e in scrittura... e ciò causa un crash del programma in quanto i thread si incastrano... invece il semaforo risolve tutti i problemi, l'unico problema era la sequenza dei thread ma l'ho risolta nel post precedente grazie