Ha, ha, laisse-moi deviner, tu es sur un système posix ? Parce que sous Windows, ça aurait été torché en un appel de fonction: WaitForMultipleObjects(). Il y a pas mal de trucs moisi sous Windows, mais ça c'est vraiment bien foutu: un genre de select que tu peux appliquer sur un peu près tout: semaphore, mutex, process, thread, pipe, fichier, connexion TCP, évènement d'une fenêtre, etc....
Avec la lib pthread, faudra passer par des variables conditions, et le code ne sera pas spécialement trivial. Tu peux t'inspirer de ça:
http://stackoverflow.com/questions [...] ary-sleeps
(c.f. première réponse). Les fonctions qui t'intéresseront sont pthread_cond_signal() et pthread_cond_wait(). J'évite le détail, parce qu'il y en a potentiellement pour des pages....