zhuravlevkk
@zhuravlevkk
Инженер-программист

Где ошибка при работе с потоками?

Имеется некая функция, в который идет много вычислений с матрицей. Решил разбить работу на два потока.
...
		thread even(bareissEven,a, k, p0);
		thread odd(bareissOdd,a, k, p0);
		even.detach();
		odd.detach();
...


Вызываемые функции
void bareissEven(matrix<cpp_int>& a, int k, cpp_int p0){
	for (int i = 0; i < a.size1(); i++)
	{
		if (i == k) continue;
		for (int j = 0; j < a.size2(); j++)
		{
			if (j == k) continue;
			if (j % 2 == 0) a(i, j) = ((a(k, k) * a(i, j)) - (a(i, k) * a(k, j))) / p0;
		}
	}
}

void bareissOdd(matrix<cpp_int>& a, int k, cpp_int p0) {
	for (int i = 0; i < a.size1(); i++)
	{
		if (i == k) continue;
		for (int j = 0; j < a.size2(); j++)
		{
			if (j == k) continue;
			if (j % 2 != 0) a(i, j) = ((a(k, k) * a(i, j)) - (a(i, k) * a(k, j))) / p0;
		}
	}
}


При компиляции получаю
5cf22e02d3201629968883.png

Что я делаю не так?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
@qqrm
Лучше пользоваться std::async, чем голыми тредами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы