потоки в С++, с++11

 
0
 
C++
ava
victordm0394 | 08.12.2016, 23:56
Помогите пожалуйста реалзовать данное приложение в консоли VS C++ . Просто не понимаю принцыпы работы потоков в данной ситуации и сколько их должно быть. Заранее спасибо.


Вахтер следит за тем, чтобы в картинной галерее было не более 50
посетителей. Для обозрения представлены 5 картин. Посетитель ходит от картины
к картине, и если на картину любуются более чем десять посетителей, он стоит в
стороне и ждет, пока число желающих увидеть картину не станет меньше.
Посетитель может покинуть галерею. Создать многопоточное приложение,
моделирующее работу картинной галереи.  :dash2 
Kommentare (1)
ava
ss | 12.12.2016, 10:38 #
потоки: 1 Вахтер + 50 посетителей. Это максимальное количество. Посетители могут менятся 0 - 50

посетитель

class Visitor
{
public:
visitor(Porter* porter)
void run()
}

void visitor::run
{//это обход картин
     porter->image1();
     porter->image2();
     porter->image3();
     porter->image4();
     porter->image5();
}


Вахтер
class Porter
{
Semaphore semaphore[5];
public:
Mutex mutex;
void image1();
void image2();
void image3();
void image4();
void image5();

Thread* create visitor();
}

void Porter::image5()
{
mutex.unlock();
}



для каждого метода  void image();  ставим свой Semaphore что бы он пропускал конкретное количество. (создание Semaphore см статьи)
и можно некую задержку wait(time) для того чтобы посетитель оставался некоторое время  возле картины

в main создаем Porter.  делаем бессконечный цикл с созданием посетителей и мьютексом.
while(true)
{
if(porterCount < 50)
porter.createvisitor();
else
mutex.lock();
}

т.е. класс вахтер создает 50 и блокируется. Посетители начинают обходить картины. Подошли к первой, постоял некоторое время. семафор следит за количеством потоков - посетителей. Потом пометитель переходит к второй картине ...
На пятой картине он уходит из галерее (заканчивает работу поток) и разблокирует вахтера чтобы он создал нового посетителя.
код написанный свехру это как идея. В таком виде он работать не будет.
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden