p align="justify">}
// встановлюємо прапорець хендла, що б повідомити головному потоку про те, що ми відпрацювали
((ManualResetEvent) handle). Set ();
}
Тут головний потік запускає три дочірні потоку, які починають викачувати сайти. Поки вони працюють - головний потік очікує в точці WaitHandle.WaitAll (handles);. Як тільки всі три потоки завершать роботу - головний потік продовжить своє виконання. p align="justify"> Щоб при будь виникаючої помилку в потоках, потоки продовжували роботу, але в кінці роботи програми, помилки відобразилися б користувачеві ми будемо використовувати блок try {} catch {} в методі який створює потоки - не зможе відловити помилки самих потоків. Це означає, що відловлювати помилки потоків потрібно всередині того методу, де потік і працює. p align="justify"> Отримаємо більш досконалу версію завантажувача, в якому реалізована політика обробки виключень, вибір кількості потоків, очікування завершення всіх потоків, таймер завантаження і збереження результатів у файли. див. додаток.
додаток програма багатопоточний
4. ТЕСТУВАННЯ ПРОГРАМИ
Протестувавши додаток з різною кількістю потоків, був отриманий такий результат: див. малюнок 2 - малюнок 6.
В
Рисунок 2 - Робота програми в однопоточному режимі
В
Рисунок 3 - Робота програми у два потоки
В
Рисунок 4 - Робота програми в три потоки
В
Рисунок 5 - Робота програми в чотири потоки
В
Малюнок 6 - Робота програми в п'ять потоків
Таблиця 1 Таблиця відносини часу завантаження сторінок до кількості потоків
Кількість запущених одночасних потоковВремя в секундах18.79224.85633.42243.26353.191
В
Малюнок 7 - Графік залежності часу на завантаження сторінок від кількості одночасних потоків
Проаналізувавши дані таблиці 1 і графіка залежності часу на завантаження сторінок від кількості потоків див. малюнок 7, можна зробити висновок що, використання багатопоточності дає хороший результат при роботі з віддаленими об'єктами, такими як web-сторінки або бази даних. Якщо запит до web-сторінці або базі даних виконується досить довго, то для цього краще створити окремий потік, надавши користувачу можливість продовжити роботу з іншими даними. br/>
ВИСНОВОК
У курсовій роботі були вивчені методи створення багатопоточних додатків з використанням мови C # в Visual Studio.NET.
Побудовано алгоритми та структура програми багатопотокового додатку. Отримане додаток синхронізує виконання процесів завантаження web-сторінок. Дана програма реалізована мовою C #, виконуваний файл займає 7680 бай...