Originariamente inviato da Infernal
Ho pensato anche ai thread, ma ho letto che usando la libreria pthread vengono creati thread user level, e poichè devo fare chiamate bloccanti, mi bloccherebbero anche il resto del programma.
Questo dove l'hai letto? Un thread dal momento in cui è creato al momento in cui viene chiuso ha vita autonoma all'interno di un programma e spesso viene proprio usato per evitare di piantare il programma principale affidandogli proprio le chiamate bloccanti.

Se dal thread che creo non tocco la memoria del programma "principale" non ho bisogno di usare semafori, giusto?
Hai bisogno di usarli se hai variabili globali condivise che sia il thread che il programma principale ci vanno a leggere e/o scrivere. Se non hai variabili globali condivise non hai bisogno di sincronizzare gli accessi e di fatto hai due programmi in uno.