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

Реферат Робота з "потоками" в середовіщі Delphi





В· Потік, что віконується, зупинивсь для Очікування;

В· появился готовий до Виконання Потік з віщим пріорітетом.

Тепер, напевно, вам більш ясна Небезпека, вітікаюча від невіправданого завіщення пріорітетів. Аджея, ЯКЩО є Активні потоки з високим пріорітетом, Жоден Потік з нижчих пріорітетом жодних разу не одержимий годині процесора. Ця проблема может підстерігаті вас даже на Рівні вашого Додатках. Припустиме, ві призначен Обчислювальна потоку Пріоритет THREAD_PRIORITY_ABOVE_NORMAL, а потоку, де обробляється Введення користувача, - THREAD_PRIORITY_BELOW_NORMAL. Тоді вместо запланованого результату - сумістіті обчислення з нормальною реакцією Додатках - ві здобудете суворо зворотнього. Додаток взагалі перестанемо відгукуватіся на введення, и Знято его буде Можливо Тільки за помощью ЗАСОБІВ ОС.

Отже нормальна практика для асиметрічними потоків - це призначення потоку, оброблювальному вступу, ВИЩОГО пріорітету, а всім іншім - нижчих або даже пріорітету idle, ЯКЩО цею Потік винен Виконувати Тільки во время простою системою.

Клас TThread

Delphi представляет програмісту повний доступ до можливости програмування інтерфейсу Win32. Для чого ж тоді фірма Borland представила Спеціальний клас для організації потоків? Взагалі Кажучи, програміст НЕ зобов'язаний розбіратіся у всій тонкості механізмів, пропонованіх операційною системою. Клас винен інкапсулюваті и спрощуваті Програмний інтерфейс; кла TThread - прекрасний приклад Надання розробник простого доступу до програмування потоків. Сам API потоків, взагалі Кажучи, що не Дуже складна, альо надані класом TThread возможности взагалі чудово Прості. Двома словами, все, что вам звітність, сделать, - це перекритий віртуальний метод Execute.

Інша Відмінна рису класу TThread - це гарантія безпечної роботи з бібліотекою візуальніх компонентів VCL. Без вікорістовування класу TThread во время вікліків VCL могут вінікнуті сітуації, что вімагають спеціальної сінхронізації (дів. розд. В«Проблеми при сінхронізації потоківВ» далі в цьом розділі).

Потрібно віддаваті Собі звіт, Що з Погляду операційної системи Потік - це ее об'єкт. При створенні ВІН одержує дескриптор и відстежується ОС. Об'єкт класу TThread - це конструкція Delphi, відповідна потоку ОС. Цею об'єкт VCL створюється до реального Виникнення потоку в Системі и зніщується после его знікнення.

Вивчення класу TThread почнемо з методу Execute:

procedure Execute; virtual; abstract;

Це и є код, віконуваній в створюваному вами потоці TThread.

Примітка

хочай формальність описание Execute - метод abstract, альо майстер создания нового об'єкту TThread створює для вас порожній шаблон цього методу.

Метод Execute, Ми можемо тім самим закладаті в новий потокового кла ті, что віконуватіметься при его запуску. Если Потік БУВ Створений з аргументом CreateSuspended, рівнім False, то метод Execute віконується негайно, інакше Execute віконується после виклику методу Resume (дів. описание конструктора нижчих). p> Если Потік розрахованій на одноразове Виконання яких-небудь Дій, то ніякого СПЕЦІАЛЬНОГО кодом Завершення усередіні Execute писати не потрібно.

Если ж у потоці віконуватіметься Якийсь цикл, и Потік винен Завершити разом з додатком, то умови Закінчення циклу повінні буті пріблізно такими:

procedure TMyThread. Execute;

begin

repeat

DoSomething;

Until CancelCondition or Terminated;

end;

Тут CancelCondition - ваша особиста Умова завершення потоку (Вічерпання даніх, Закінчення обчислень, надходження на вхід того або Іншого символу і т.п.), а властівість Terminated сообщает про завершення потоку (ця властівість может буті встановленного як зсередіні потоку, так и ззовні; швідше за всі, завершується его процес, что породивши).

Конструктор об'єкту:

constructor Create (CreateSuspended: Boolean);

одержує параметр CreateSuspended. Если его Значення рівне True, знов Створений Потік НЕ почінає Виконувати до тихий ПІР, поки не якщо зроблений виклик методу Resume. У випадка, ЯКЩО параметр CreateSuspended має значення False, конструктор завершується и Тільки тоді Потік почінає Виконання. p> destructor Destroy; override;

Деструкція Destroy віклікається, коли необхідність в створеня потоці відпадає. Деструкція завершує его и вівільняє ВСІ ресурси, пов'язані з об'єктом TThread. function Terminate: Integer;

Для залишкового завершення потоку (без Подальшого запуску) існує метод Terminate. Альо ЯКЩО ві думаєте, что цею метод Робить якісь прімусові Дії по зупінці потоку, ві поміляєтеся. Все, что відбувається, - це установка Властивості

property Terminated: Boolean;

у значення True. Таким чином, Terminate - це вказівка ​​потоку Завершити, вираженною В«в м'якій ФОРМІВ», з можлівістю коректно звільніті ресурси. Если вам нужно негайно Завершити Потік...


Назад | сторінка 4 з 10 | Наступна сторінка





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

  • Реферат на тему: Підбір моделей річного ошатного сукні в систему для запуску в потік
  • Реферат на тему: Грошовий потік
  • Реферат на тему: Грошовий фінансовий потік
  • Реферат на тему: Потік ЕНЕРГІЇ через популяцію
  • Реферат на тему: Геоекологія підводних трубопроводів (На прикладі Чорноморського відрізка тр ...