Loading...
iozzilina avatar iozzilina 22 Точки

Мулти-треадинг - Мегадет задача

Пробвах да го разпиша с класове за вратата и човека, но имам проблем със създаването на нишката с функция на Човека.

https://github.com/iozzilina/CppHW/blob/master/MegadeathSource.cpp

Някой да подскаже?

 

 

Тагове:
0
C++ Programming
manito_17711 avatar manito_17711 43 Точки

За да тръгне в този му вид, трябва:

1. include<thread>

2. в класа Door добавяне на const след декларацията на метода -> int TimeToPass() const {return timeToPassInMS;}

3. в класа Person -> да приема (const Door & aDoor)

4. И може би това, което те интересува най-много е:

ExitQueThreads.push_back(std::thread(&Person::passThruDoor, *audience[i], aDoor));

Подаваш класа с функцията, после обекта и накрая параметрите... така, както си ги подала първия път!

И за да не гърми - закоментираш mtx.lock() & mtx.unlock()... мисля, че малко ти е объркана логиката тук. Мютекса блокира достъпа до определен ресурс. Ти практически караш всяка нишка за заспи са 20 сек, обаче не от общото време, а всяка сама за себе си... ако не бъркам. 

..и да си зачистиш паметта на финала.. (vector<Person*>).. 

 

Тук, с цел пример, програмата е леко окастрена:

#include <iostream>
#include <thread>

class Door
{
public:
	int TimeToPass() const { return 20; }
};

class Person
{
public:
	void passThruDoor(const Door &aDoor)
	{
		std::cout << "Time to exit: " << aDoor.TimeToPass() << " s\n";
	}
};


int main()
{
    Door door = Door();
    Person person = Person();

    std::thread th (&Person::passThruDoor, person, door);

    th.join();
	return 0;
}

 

Успех занапред

0
17/07/2016 22:37:07
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.