0
곱셈 행렬을 원합니다. Parallel.For를 사용할 때 단일 스레드는 다중 스레드보다 느립니다. 그러나 두 개의 스레드를 사용할 때 단일 스레드는 두 개의 스레드보다 빠릅니다. 곱셈 행렬에 두 개의 스레드를 사용하고 싶습니다. 내 오류가 무엇입니까? 나는 이해하지 못한다. 귀하의 답변 주셔서 감사합니다 ..행렬을 이용한 행렬 곱셈
class carp
{
double[,] a = new double[300, 300];
double[,] b = new double[300, 300];
double[,] c = new double[300, 300];
int indis = 0;
public carp(double[,] a, double[,] b, double[,] c,int i)
{
this.a = a;
this.b = b;
this.c = c;
indis = i;
}
public void matrixloop()
{
Thread t1;
Thread t2;
ThreadStart starter;
ThreadStart starter2;
int s = a.GetLength(0);
for (int i = 0; i < s; i++)
{
for (int j = 0; j < s; j++)
{
starter =() => carpı(i,s,j);
starter2 =() => carpı(i, s, j+1);
t1=new Thread(starter);
t2 = new Thread(starter);
t1.Start();
t2.Start();
t1.Join();
t2.Join();
j = j + 1;
}
}
}
private void carpı(int i, int s, int j)
{
//multiplication operation
double v = 0;
for (int k = 0; k < s; k++)
{
v += a[i, k] * b[k, j];
}
c[i, j] = v + 1;
}
}
당신이 그들 모두를 측정하는 데 사용되는 코드를 공유를 사용하여 원하는 않습니다. Btw 대답은 간단합니다. 각 반복 (매우 비쌉니다)마다 2 개의 새 스레드를 만들어야합니다. 'Paralell.For'는 스레드를 다시 사용합니다. –
스레드를 스스로 제어하려고하기 때문에 Parallel.For를 사용하고 싶지 않습니다. . 이것을 어떻게 만드나요? –
당신은 어떤 종류의 대답을 기대할지는 명확하지 않습니다. 너는 무엇을 의미하니? 이것을 어떻게 만드나요? * 무엇을 만드나요? –