АРІ-функції для управління потоками та процесами. Синхронізація потоків у Windows
Автор: originaldotboi • Май 30, 2022 • Лабораторная работа • 1,311 Слов (6 Страниц) • 183 Просмотры
Виконав: Дяків М. І.
Група: КН-108
Варіант №: 7
Дата захисту: 16.05.2022 р.
Кафедра: САП
Дисципліна: Об’єктно-орієнтоване програмування
Перевірив: Дутка В.Ю.
ЗВІТ
з лабораторної роботи №7
на тему "АРІ-функції для управління потоками та процесами. Синхронізація потоків у
Windows."
Мета роботи:
Ознайомитись з основними АРІ-функціями для управління потоками та
процесами, а також з методикою синхронізації потоків за допомогою
критичних секцій.
1 Завдання
Написати програму для одночасного опрацювання масиву двома
потоками. Перший потік знаходитиме кількість нульових елементів масиву,
другий – суму від’ємних парних елементів масиву
Написав та скомпілював код:
#include <iostream>
#include <thread>
#include <chrono>
#include <fstream>
#include <Windows.h>
/*7. Написати програму для одночасного опрацювання масиву двома
потоками. Перший потік знаходитиме кількість нульових елементів масиву,
другий – суму від’ємних парних елементів масиву*/
using namespace std;
void first(int f[5]) {
cout << "Loading first array...\n";
int c = 0;
for (int i = 0; i <= 5; i++) {
cout << "processing #" << i << " element of first array" << endl;
if (f[i] == 0) {
c++;
}
}
cout << "Count of elements with value 0: " << c << endl << endl;
system("color 2");
};
void second(int s[5]) {
cout << "Loading second array...\n";
int j = 0;
for (int i = 0; i <= 5; i++) {
cout << "processing @" << i << " element of second array" << endl;
if (s[i] < 0 && s[i] % 2) {
j = s[i] + j;
}
}
cout << "Sum of negative elements: " << j << endl << endl;
system("color 3");
};
int main()
{
cout << "Enter first array: " << endl;
int f[5];
for (int i = 0; i < 5; i++) {
cin >> f[i];
}
cout << "Enter second array: " << endl;
int s[5];
for (int i = 0; i < 5; i++) {
cin >> s[i];
}
std::thread thr1(first, f);
std::thread thr2(second, s);
thr1.detach();
thr2.detach();
system("color 2");
cin.get();
return 0;
};
Результат:
[pic 1]
Задвання 2.
Написати програму для одночасного опрацювання матриці двома
потоками. Перший потік замінятиме кожен елемент масиву, який кратний 3, на
значення останнього елемента поточного рядка, другий – виводитиме на екран
рядки, у яких принаймні один елемент дорівнює останньому елементу даного
рядка
Написав та скомпілював код:
#include <iostream>
...