Вообще-то пофиг как они приходят, поскольку неявно выстраиваются в очередь. Парикмахер то один.crypto5 wrote:Всмысл не в "строем" и с задержкой, а в том что они приходят одновременно и в разных потоках. На данный момент ваша программа такое обрабатывает некоректно, например между if(available_chairs) и --available_chairs; в другом потоке кто-то может тоже уменьшит значение, и тогда у вас там окажется негативное значение, а клиентов в зале ожидания будет больше чем стульев.Мальчик-Одуванчик wrote: Об том что ходят строем я подумал но решил для простоты не вводить временных задержек.
Да и потоки зачем тут нужны - как раз классическая очередь. Есть место - встал в очередь, нет - гуляй.
К примеру - парикмахерская будет что-то типа сервера, слушающего на двери. Зачем на клиентов городить свои потоки?
Клиены посылают запросы на обслуживание и эти запросы выстраиваются в подобие очереди. Запрос на обслуживание обрабатывается только в основном потоке, поэтому здесь в принципе не будет ошибки с подсчетом стульев. Другое дело, что в этом решении выбор следующего клиента из очереди не определен.
У меня поток только на рабочее место парикмахера, да и то то - исключительно из расчета на их дальнейшее увеличение.