Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

АРІ-функції для управління потоками та процесами. Синхронізація потоків у Windows

Автор:   •  Май 30, 2022  •  Лабораторная работа  •  1,311 Слов (6 Страниц)  •  130 Просмотры

Страница 1 из 6

Виконав: Дяків М. І.

Група: КН-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>

...

Скачать:   txt (6.2 Kb)   pdf (153.8 Kb)   docx (65.3 Kb)  
Продолжить читать еще 5 страниц(ы) »
Доступно только на Essays.club