Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Розробка програми, що демонструє багатопоточність для одного процесора

Реферат Розробка програми, що демонструє багатопоточність для одного процесора





згодом порівняти роботу програми з різною кількістю потоків і зробити відповідні висновки. Назвемо додаток downloader. br/>

.1 Структурна схема програми


На малюнку 1 показана структурна схема нашого застосування.


В 

Рисунок 1 - Структурна схема програми downloader


3.2 Розробка і оптимізація коду програми на C #


Отже, потік - це послідовність команд програми, яка виконується паралельно з іншими потоками. Слід відзначити дві особливості потоків - по-перше вони можуть використовувати один і той же програмний код, і по-друге вони мають доступ до одних і тих же даних. p align="justify"> В якості даних у нас буде черга з URL адресов.Enqueue ("#" justify"> Загальний код - це код для завантаження чергової web сторінки:


WebRequest request = WebRequest.Create (URL); response = (HttpWebResponse) request.GetResponse (); HTML = (new StreamReader (response.GetResponseStream ())). ReadToEnd ();

Синхронізацію найлегше робити за допомогою оператора lock:

Object locker = new Object (); CriticalMethod ()

{

lock (locker)

{

// критична секція

// тут ми працюємо із загальними для потоків даними

}

}


Оператор lock приймає як аргумент об'єкт синхронізації locker і допускає всередину критичної секції тільки один потік, інші потоки підійшли до lock - чекають поки завершиться потік, що знаходиться всередині критичної секції. В якості об'єкта синхронізації може виступати будь-який створений (Не null) об'єкт посилального типу. p align="justify"> Перший варіант робочої програми виглядає так:


using System; System.Collections.Generic; System.Text; System.Threading; System.Net; System.IO; Downloader

{Program

{

// чергу адрес для закачкіQueue URLs = new Queue ();

// список викачаних страніцList HTMLs = new List ();

// локер для черги адресовobject URLlocker = new object ();

// локер для списку викачаних страніцobject HTMLlocker = new object (); void Main (string [] args)

{. Enqueue ("#" justify">// створюємо і запускаємо 3 потоку (int i = 0; i <3; i + +)

(new Thread (new ThreadStart (Download))). Start ();

// очікуємо натискання Enter.ReadLine ();

} static void Download ()

{

// будемо крутити цикл, поки не закінчаться ULR в черзі (true)

{URL;

// бло...


Назад | сторінка 11 з 15 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка зручною діалогової програми, що полегшує доступ до файлових даними ...
  • Реферат на тему: Культурно-розважальні програми на російському телеекрані (на прикладі прогр ...
  • Реферат на тему: Створення програми, що включає всі програми лабораторних робіт
  • Реферат на тему: Порівняльний аналіз програми Занкова і традиційної програми
  • Реферат на тему: Розробка програми &Обробка текстових даних&