private void DividedControlAdditionThread() { IntPoint myTask; while (true) { lock (_lockObj) { if (NotDone.Count > 0) { myTask = NotDone.First(); NotDone.RemoveAt(0); } else { return; } /* * if (Thread.CurrentThread.Name == "0") * { * counter++; * } * if (Thread.CurrentThread.Name == "1") * { * counterReLoop++; * } */ } C.Matr[myTask.X, myTask.Y] = A.Matr[myTask.X, myTask.Y] + B.Matr[myTask.X, myTask.Y]; ChangeDoneWork(100 - NotDone.Count * 100 / Xa / Ya); } }
private void DividedControlMultiplicationThread() { IntPoint myTask; while (true) { lock (_lockObj) { if (NotDone.Count > 0) { myTask = NotDone.First(); NotDone.RemoveAt(0); } else { return; } } int cell = 0; for (int i = 0; i < Ya; i++) { cell += A.Matr[myTask.X, i] * B.Matr[i, myTask.Y]; } C.Matr[myTask.X, myTask.Y] = cell; ChangeDoneWork(100 - NotDone.Count * 100 / Xa / Yb); } }
private void DividedControlTransposeThread() { IntPoint myTask; while (true) { lock (_lockObj) { if (NotDone.Count > 0) { myTask = NotDone.First(); NotDone.RemoveAt(0); } else { return; } } C.Matr[myTask.Y, myTask.X] = A.Matr[myTask.X, myTask.Y]; ChangeDoneWork(100 - NotDone.Count * 100 / Xa / Ya); } }