их потоків один одним;
розробити ряд тестів для перевірки коректності роботи програми.
Зв'язний список - структура даних <# "justify"> - головний, не започатковано структуру списку і звільняє після його використання пам'ять;
- потік, який додає елементи в список;
потік, що видаляє елементи зі списку;
потік, що змінює існуючі елементи;
потік, який читає інформацію списку (виводить список на екран).
.2 Загальний огляд методів реалізації завдання
Таким чином, першим етапом написання програми стала реалізація структури списку, а також функцій, що працюють з ним. Головне завдання - синхронізація потоків, що працюють зі списком. Для цього я використала виділення додаткової купи для списку. Це несе в собі ключове сенс: кожен раз, коли який небудь потік отримує доступ до списку (а значить і до купи), то він як критичний розділ блокується, а значить будь-який інший потік, також намагається отримати доступ до списку буде призупинено до моменту його звільнення. Більш того в програмі мною були використані методи забезпечення багатопоточності. p align="justify"> 2. ВИКОНАННЯ ПРОЕКТУ
.1 Функціонал кільцевого списку
До структурі списку застосовні наступні методи:
- InitialList - ініціалізація списку;
- AddElem - додавання вузла в кінець списку;
EraseElem - видалення елемента зі списку; так як реалізований мною список має всього 2 поля: покажчик на наступний елемент і ціле число (безпосередньо дані), то пошук елемента для його видалення проводиться по цьому самому числу, при еьтом вважається, що елементи в списку не повторюються (для формалізації задачі);
ChangeElem - зміна даних вже існуючого вузла; пошук елементи аналогічний пошуку при видаленні;
Print - вивід на екран всіх вузлів списку.
.2 Опис функцій API для роботи з пулом пам'яті в ОС Windows та їх роль у проекті
У постановці завдання є важливий пункт - забезпечення виключення можливості перекриття різних потоків один одним. Реалізовувати його пропонується за допомогою створення під список окремої купи, а всі операції зі списком здійснювати за допомогою функцій API роботи з пулом пам'яті. У своїй програмі я використовувала такі функції:
- HeapCreate. Створює додаткове купу в процесі. Приймає 3 параметри: параметр fdwOptions модифікує спосіб виконання операцій над купою. У ньому можна вказати 0, НЕАР_NO_SERIALIZE, НЕАР_GENERATE_EXCEPTIONS, HEAP_CREATE_ENABLE_EXECUTE або ком...