Особливості багатозадачності в середовищі Windows
Контрольная работа - Компьютеры, программирование
Другие контрольные работы по предмету Компьютеры, программирование
створити чергу. (Черга працює за правилом FIFO. Перший зайшов перший вийшов. Поки не вийдуть всі потоки перед данним, він повинен чекати).
Написати програму (використовувати мютекс та семафор), що створює 5 клієнтських та 2 серверних потока. Для кожного потока зафіксувати деякий період часу, який він чекає, а потім поміщає у чергу свій номер та номер свого запиту (1,2 і т.д.). Серверні потоки нічого не роблять поки у черзі не зявиться хоча б один єлемент. Як тільки він зявився один з серверних потоків обробляє його (пише у файл свій номер та отриманий запит). Після обробки потік “засинає” на фіксований час. Якщо в черзі більше 10 запитів програма зупиняється.
Підібрати такі значення часових проміжків, щоб черга переповнювалась.
Написати програму (використовуючи критичні секції та семафор), що аналогічна до програми з завдання №12. Кількість клієнтів - 2, кількість серверів 4.
Використовуючи подію з ручним сбросом реалізувати наступне: Ваша програма повинна створити два потока. Один пише у файл (можна працювати просто з памятю) 1000 одиниць і потім у циклі читає цей файл та змінює 1 на 0 та навпаки. (Після другої прогонки у файлі будуть лише нулю, потім тільки одиниці і т.д.). Другий потік повинен просинатися через фіксовані проміжки часу та підраховувати кількість одиниць у файлі.
За допомогою мютекса та таймера реалізувати наступне: Один потік просинається через однакові проміжки часу та додає 1 за модулем десять до числа у файлі (спочатку там нуль). Ваша програма повинна змоделювати будильник, що пікає кожну годину таке число разів, скільки записано у файлі.
Виконати завдання №15 використовуючи критичні секції та таймера.
Виконати завдання №15 використовуючи семафори та таймери.
Використовуючи подію і таймер написати програму, що створює два потока, що працюють по черзі (так само як у завданні №1, але потоком не треба обмінюватись повідомленнями). Ваша програма повинна моделювати будильник, який кожну годину дивиться який з процесів працює (№1 або №2) та пікає 1 або 2 рази відповідно.
За критичної секції та подій написати програму, що створює 11 потоків. Кожен з 10 перших потоків підраховує числа 10^10, 20^9, 30^8, 40^8, 50^7, 60^6, 70^5, 80^4, 90^2, 100^1 відповідно. Їх роботу необхідно синхронізувати таким чином, щоб вони по черзі писали результат у файл, а одинадцятий потік послідовно зчитував ці числа та додавав їх.
Написати програму з завдання №19 із використанням семафорів та подій.
Завдання на виконання
Використовуючи компілятор С++, або Assembler реалізувати програму синхронізації згідно варіанту:
1.Перевірити твердження SDK про те, що потоки мають дисципліну захоплення мютекса за правилом FIFO
2.Перевірити порядок виконання потоків після сигналізації події(event)
3. Написати бібліотеку роботи з комплексними числами в багатопоточному середовищі за допомогою критичної секції (одне блокування на всі потоки)
4.Написати бібліотеку роботи з комплексними числами в багатопоточному середовищі за допомогою повязаного з комплексним числом мютекса
5.Написати бібліотеку роботи з комплексними числами в багатопоточному середовищі за допомогою повязаного з комплексним числом мютекса(окремо читання і для запису)
6. Написати бібліотеку роботи з векторами в багатопоточному середовищі за допомогою критичної секції (одне блокування на всі потоки)
7.Написати бібліотеку роботи з векторами в багатопоточному середовищі за допомогою повязаного з вектором мютекса
8.Написати бібліотеку роботи з векторами в багатопоточному середовищі за допомогою повязаного з вектором мютекса(окремо читання і для запису)
9.Зясувати дисципліну виконання потоків, які стояли в черзі по мірі звільнення семафора
10.Організувати синхронізацію між іменованими створеними обєктами за рахунок подій(event)
11.Написати бібліотеку, яка узагальнює поняття критичної секції на міжпроцесній взаємодії
12.Написати бібліотеку роботи зі стеком в багатопоточному середовищі за допомогою повязаного з вектором мютекса
13.Написати бібліотеку роботи зі стеком в багатопоточному середовищі за допомогою критичної секції (одне блокування на всі потоки)
14.Написати бібліотеку роботи зі стеком в багатопоточному середовищі за допомогою повязаного з вектором мютекса(окремо читання і для запису)