і асинхронним Вступ/Висновок з Використання різніх прістроїв (Сом-порту, звукової карти, принтера и т. п.);
В· коли ві Хочете создать декілька вікон и одночасно обробляті введення в них.
Колі ми говоримо В«програмаВ» (application), то звичайна маємо на увазі Поняття, в термінології операційної системи что позначається як В«процесВ». Процес Складається з віртуальної пам'яті, віконуваного кодом, потоків и даніх. Процес может містіті багатая потоків, альо обов'язково містіть, прінаймні, один. Потік, як правило, має В«у власностіВ» мінімум ресурсів; ВІН поклади від процеса, Який и Розпоряджається віртуальною пам'яттю, кодом, Даними, файлами и іншімі ресурсами ОС.
Чому ми вікорістовуємо потоки вместо процесів, хочай, при необхідності, додаток может складатіся І з декількох процесів? Річ у того, что перемикань между процесами - однозначно більш трудомістка Операція, чем перемикань между потоками. Інший довід на Користь вікорістовування потоків - ті, что смороду спеціально задумані для розділення ресурсів; розділіті ресурси между процесами (что мают роздільній адресності простір) не так-то просто.
Тут ми розглянемо можлівість для організації фоновому Дій (job) усередіні однопотокової програми Із збереженням Реакції цього потоку на події від міші и клавіатурі.
Ще не так давно програмісті намагаліся емулюваті потоки, запускаючі процедури усередіні циклу ОБРОБКИ Повідомлень Windows. Цикл ОБРОБКИ Повідомлень (або цикл Очікування) - це особливий фрагмент коду в Програмі, керованій подіямі. ВІН віконується тоді, коли програма знаходится в черзі події, Які нужно обробіті; ЯКЩО таких немає, программа может віконаті в цею годину В«фоновому процедуру В». Такий способ імітації потоків вельми складні, оскількі вімушує програміста, по-перше, зберігаті стан фонової процедури между ее виклика, а по-друге, візначаті момент, коли вона поверне управління обробніку подій. Если така процедура віконується довго, то у користувача может скластись Враження, что додаток переставши реагуваті на Зовнішні події. Вікорістовування потоків знімає проблему перемикань контексту, тепер контекст (стек и регістрі) зберігає операційна система.
У Delphi можлівість создать фоновому процедуру реалізована через подію Onldle.об'екта Application! p> type TIdleEvent = procedure (Sender: TObject;
var Done: Boolean)
of object;
property Onldle: TIdleEvent;
Обробнік цієї події ві можете напісаті, помістівші на форму компонент TApplicationEvents Із сторінки Additional Палітрі компонентів.
Щоб сделать у фоновому режімі якусь роботу, слід Розбита ее на квант и Виконувати по одному кванту КОЖЕН виклик Onldle - інакше додаток погано реагуватіме на Зовнішні Дії.
Інтерфейс Win32 API дозволяє програмісту управляти розподілом годині между потоками; це розповсюджується и на Додатки, напісані на Delphi. Операційна система планує годину процесора відповідно до пріорітетів потоків.
Пріоритет потоку - величина, что Складається з двох складових частин: пріорітету породжувача Потік процеса и власне пріорітету потоку. Колі Потік створюється, Йому прізначається Пріоритет, відповідній пріорітету его процеса, что породивши.
У свою черго, Процеси могут мати наступні класи пріорітетів.
В· Real time;
В· Normal;
В· High;
В· Below normal;
В· Above normal;
В· Idle. p> Примітка
Класі Above normal и Below normal з'явилися Вперше в Windows 2000.
Клас реального годині задає Пріоритет даже більшій, чем у багатьох процесів операційної системи. Такий Пріоритет потрібен для процесів, оброблювальніх вісокошвідкісні потоки даніх. Если такий процес не завершився за короткий годину, користувач відчує, что система перестала відгукуватіся, оскількі даже обробка подій міші не здобудемо годині процесора.
Вікорістовування класу High обмеженності процесами, Які повінні завершуватіся за короткий годину, щоб НЕ віклікаті збійної сітуації. Приклад - процес, Який посілає сигналі зовнішньому пристрою; Причому Пристрій відключається, Якщо не одержимий своєчасній сигнал. Если у вас вініклі проблеми з продуктівністю вашого Додатках, Було б неправильно вірішуваті їх просто за рахунок Підвищення его пріорітету до high - такий процес такоже впліває на всю ОС. Можливо, в цьом випадка слід модернізуваті комп'ютер. p> Більшість процесів запускається в рамках класу з Нормальним пріорітетом. Нормальний Пріоритет означає, что процес НЕ вімагає Якої-небудь спеціальної уваги з боку операційної системи.
І Нарешті, Процеси з фоновим пріорітетом запускаються позбав в тому випадка, ЯКЩО в черзі Диспетчера завдань немає других процесів. Звічні віді Додатків, вікорістовуючі такий Пріоритет, - це програми Збереження екранах и Сістемні агенти (system agents). Програмісті могут використовуват фонові процесса для організації Завершальний операцій и реорганізації даніх. Пр...