private void Cycle(int[,] matrix, int multiplyNumber) { for (int i = 0; i < matrix.GetLength(0); i++) { informationAboutMatrix newInformation = CreateStrInformation(matrix, i, multiplyNumber); Determinant3(newInformation); } }
private informationAboutMatrix CreateStrInformation(int[,] matrix, int i, int multiplyNumber) { informationAboutMatrix information = new informationAboutMatrix(); information.multiplyNumber = (int)(matrix[0, i] * Math.Pow(-1, i)) * multiplyNumber; information.smallMatrix = SmallMatrix(matrix, 0, i); return(information); }
private informationAboutMatrix CreateStrInformation(int[,] matrix, int i, int multiplyNumber) { informationAboutMatrix information = new informationAboutMatrix(); information.multiplyNumber = (int)(matrix[0, i] * Math.Pow(-1, i)) * multiplyNumber; information.smallMatrix = SmallMatrix(matrix, 0, i); mutexCountEvents.WaitOne(); information.resetEvent = manualResets[countEvents]; countEvents++; mutexCountEvents.ReleaseMutex(); return(information); }
private int Determinant(int[,] matrix) { if (matrix.Length == 1) { return(matrix[0, 0]); } for (int i = 0; i < matrix.GetLength(0); i++) { semaphores.WaitOne(); informationAboutMatrix newInformation = CreateStrInformation(matrix, i, 1); ThreadPool.QueueUserWorkItem((x) => Determinant2(x), newInformation); } resetEvent.WaitOne(); return(determinant); }
private void CycleWithOrWithoutThread(int[,] matrix, int multiplyNumber) { for (int i = 0; i < matrix.GetLength(0); i++) { informationAboutMatrix newInformation = CreateStrInformation(matrix, i, multiplyNumber); if (maxUsingThreads != 0) { CreateThread(newInformation); } else { FindDeterminantWithoutThreads(newInformation); } } }
private void Cycle(int[,] matrix, int multiplyNumber) { for (int i = 0; i < matrix.GetLength(0); i++) { informationAboutMatrix newInformation = CreateStrInformation(matrix, i, multiplyNumber); if (semaphoresCount != 0) { CreateThread(newInformation); } else { DeterminantWithoutThreads(newInformation); } } }
private void CreateThread(informationAboutMatrix information) { maxUsingThreads--; ThreadPool.QueueUserWorkItem((x) => FindDeterminantInThread(x), information); }
private void CreateThread(informationAboutMatrix information) { semaphoresCount--; ThreadPool.QueueUserWorkItem((x) => DeterminantInThread(x), information); }