Я пытаюсь расширить свои знания о потоках в C ++. Я прочитал несколько базовых c руководств по многопоточности, а также мьютексу и пытаюсь создать для l oop, который проходит через вектор и выполняет функцию с каждой его частью. По некоторым причинам некоторые функции не получают ошибок, но большинство делает.
while (!(threadVecSize + 1) >= maxThreads)
{
std::thread thread1;
thread1 = thread(WindowArray[i]->setPosition(Gravity(KeyArray[i], WindowArray[i]))); //(void) is not a argument exsepted by std::thread::thread
thread1 = thread(WindowArray[i]->setPosition, Gravity(KeyArray[i], WindowArray[i])); //<error-type>, sf::Vector2i is not a argument exsepted by std::thread::thread
thread1.join;
}
установленная позиция изменяет позицию windows и принимает вектор2i Это мой класс для ключей
class NewKey {
public:
sf::Image Img;
sf::Texture Tex;
sf::Sprite Sprite;
sf::Vector2i Velocity;
sf::Vector2i Acceleration;
};
Window Array - это вектор sfml Render Windows Все в Функция step windows предназначена для управления моим массивом windows. Я знаю, что весь этот код работает, потому что он работал, прежде чем пытаться добавить потоки, чтобы помочь сгладить его.
Ошибки
No instance of constructor std::thread::thread matches the argument list
Мои переменные
sf::Vector2i Gravity(MakeKey::NewKey& Key, unique_ptr <sf::RenderWindow>& window);
vector <NewKey> KeyArray;
vector <unique_ptr <sf::RenderWindow>> WindowArray;
vector <thread> threadVec;
int threadVecSize = threadVec.size();
unsigned maxThreads = std::thread::hardware_concurrency();