Помогите, кто может Решить одну из классических проблем межпроцессного взаимодействия:«Спящий брадобрей».
Имеется парикмахерская с двумя дверями и несколькими креслами. Посетители входят в одну дверь и выходят через другую. Парикмахер всю жизнь обслуживает клиентов. Когда клиентов нет, он спит в своем кресле. Когда посетитель приходит в салон и видит спящего парикмахера, он будит его, садится в кресло и спит, пока тот занят стрижкой. Если во время стрижки приходит еще один клиент, он садится в одно из свободных кресел и засыпает. Если свободных мест нет, клиент уходит. После стрижки парикмахер открывает клиенту выходную дверь и закрывает ее за ним. Если есть ожидающие посетители, парикмахер будит одного из них и ждет, пока тот сядет в кресло, после чего стрижет его. Если посетителей нет, парикмахер идет спать до следующего клиента.
Таким образом, эта задача описывает отношения в системах «клиент-сервер», когда клиент посылает запрос и ждет ответа сервера. В свою очередь сервер ожидает запросы клиентов, обрабатывает их и посылает ответ.
Множество запросов клиентов образуют очередь, длина которой ограничена.
При решении учесть, что длительность каждой операции составляет некоторую случайную величину.
Предоставить решение в двух вариантах:
1.с использованием семафоров в условиях разделяемой памяти;
2.с использованием сообщений в условиях распределенной памяти.
«Спящий брадобрей»., Задача по параллельному программированию |