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);
            }
        }
Beispiel #2
0
        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);
            }
        }