//поиск максимального элемента public Element GetMaxValuePar(Element element) { elements = new Element[procCount]; for (var i = 0; i < procCount; i++) { var it = i; tasks.Add(Task.Factory.StartNew(() => GetMaxValue(element, size * it / procCount, ((it + 1) * size) / procCount, it))); } foreach (var task in tasks) { task.Wait(); } tasks.Clear(); foreach (var el in elements) { if (el == null) { Console.WriteLine("nulll"); } if (el?.Value > element.Value) { ChangeMax(element, el); } } return element; }
private void ChangeMax(Element element, float value, int row, int column) { lock (locker) { element.Row = row; element.Value = value; element.Column = column; } }
public Element GetMaxValue(Element element, int start, int end, int it) { var el = new Element() {Value = 0}; for (; start < end; start++) { for (var j = 0; j < size; j++) { if (matrix[start, j] > el.Value) { ChangeMax(el, matrix[start, j], start, j); } } } if (el == null) Console.WriteLine("NUUUUUUUUUUUUUUUUUUUUUUUUL"); elements[it] = el; return element; }
private void ChangeMax(Element el1, Element el2) { el1.Value = el2.Value; el1.Column = el2.Column; el1.Row = el2.Row; }