Существует несколько методов, позволяющих потокам передавать информацию. Самый простой способ - мьютекс над общим состоянием. Одним из наиболее классически масштабируемых способов являются очереди сообщений. Способ, которым вам нужно пользоваться, зависит от вашего домашнего задания.
В общем, защищайте совместно используемое состояние с помощью вашего примитива синхронизации (будь то мьютекс, семафор или что-то еще) и позволяйте несделенному состоянию работать нормально. Если у вас есть сотрудники и клиенты, возможно, они общаются через «почтовый слот», которым они делятся. Защитите этот почтовый слот с помощью своего семафора, чтобы один из них не пытался читать, пока другой пишет (или наоборот), и у вас будет основная стратегия, которая вам нужна.