changed communicator to have three condition variables. only works with equal numbers of speakers and listeners