Файл: Параллель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, а результаты выводятся на форму.