Файл: Параллель2 - реализовать конструкцию Parallel.Invoke.docx

Добавлен: 13.02.2019

Просмотров: 407

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа №2 («Конструкция Parallel.Invoke»)

Золотых Светлана, 2161121

Задание: реализовать конструкцию Parallel.Invoke

Код программы:

namespace ParallelFor

{

public partial class ParallelInvoke : Form

{

public ParallelInvoke()

{

InitializeComponent();

System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;


}

//произведение элементов матрицы

private int Get1(int[,] arr) {

int result1 = 1;

for (int i = 0; i < arr.GetLength(0); i++)

for (int j = 0; j < arr.GetLength(1); j++)

checked { result1 *= arr[i, j]; }

return result1;

}

//сумма элементов матрицы

private int Get2(int[,] arr) {

int result1 = 0;

for (int i = 0; i < arr.GetLength(0); i++)

for (int j = 0; j < arr.GetLength(1); j++)

checked { result1 += arr[i, j]; }

return result1;

}

//среднее ар матрицы

private double Get3(int[,] arr) {

int result1 = 0, k=0;

for (int i = 0; i < arr.GetLength(0); i++)

for (int j = 0; j < arr.GetLength(1); j++)

checked { result1 += arr[i, j];

k++;

}

double result = result1 / k;

return result;

}

private void button1_Click(object sender, EventArgs e)

{

int[,] array2Da = new int[4, 3] { { 1, 2, 5 }, { 3, 4, 9 }, { 5, 6, 7}, { 7, 8,3 } };

Parallel.Invoke(() =>

{ label1.Text = "Произведение элементов матрицы: " + Convert.ToString( Get1(array2Da)); }, () =>

{ label2.Text = "Сумма элементов матрицы: " + Convert.ToString(Get2(array2Da)); }, () =>

{ label3.Text ="Среднее арифметическое матрицы: " + Convert.ToString(Get3(array2Da)); }


);

}





Результат:


Вывод:

Разработано приложение WinForm. В данной программе были созданы три метода, каждый с арифметическим действием над матрицей: перемножение элементов, их сложение и вычисление среднего арифметического. Данные методы параллельно вызываются с помощью конструкции Parallel.Invoke, а результаты выводятся на форму.