Скачать презентацию СВОЙСТВА И МЕТОДЫ ПОТОКА КОДА Калинина Ю Скачать презентацию СВОЙСТВА И МЕТОДЫ ПОТОКА КОДА Калинина Ю

Svoystva_i_metody_potoka_koda.pptx

  • Количество слайдов: 16

СВОЙСТВА И МЕТОДЫ ПОТОКА КОДА Калинина Ю. СВОЙСТВА И МЕТОДЫ ПОТОКА КОДА Калинина Ю.

Параллельный поток, или просто поток - объект, выполняемый параллельно с основным потоком приложения и Параллельный поток, или просто поток - объект, выполняемый параллельно с основным потоком приложения и с другими параллельными потоками. Термин "параллельность" рассматривается в контексте вытесняющей многозадачности операционной системы - то есть, операционная система выделяет потоку некоторый квант времени, а затем переключается на другой поток. Реализация параллельных потоков опирается на возможность, предоставляемую операционной системой - "thread".

Современные операционные системы Windows обеспечивают не только многозадачность, т. е. возможность параллельной работы нескольких Современные операционные системы Windows обеспечивают не только многозадачность, т. е. возможность параллельной работы нескольких программ, но и многопоточность, когда в рамках одной программы организуется несколько параллельно выполняемых фрагментов (потоков), каждый из которых конкурирует с другими потоками за наиболее важный ресурс - время центрального процессора. В многопоточном режиме время ЦП выделяется для каждого процесса небольшими порциями (квантами), по истечении этого времени управление передается другому потоку и т. д. до тех пор, пока потоки не закончат свою работу. В любой работающей программе организуется как минимум один поток для команд программы. С помощью объектов класса TThread программа может создать дополнительные потоки для проведения некоторой фоновой работы (например, текстовый процессор Word создает дополнительные потоки для проверки правильности орфографии, разбивки на страницы, печати документа и т. п. ).

Одной из отличительных черт класса TThread является гарантия безопасной работы с библиотекой визуальных компонентов Одной из отличительных черт класса TThread является гарантия безопасной работы с библиотекой визуальных компонентов VCL. Без использования класса TThread во время вызовов VCL могут возникнуть ситуации, требующие специальной синхронизации. Нужно отдавать себе отчет, что с точки зрения операционной системы поток — это ее объект. При создании он получает дескриптор и отслеживается ОС. Объект класса TThread — это конструкция Delphi, соответствующая потоку ОС. Этот объект VCL создается до реального возникновения потока в системе и уничтожается после его исчезновения.

Создание потока Для создания потока необходимо выполнить следующие действия: создать новый проект, разместить на Создание потока Для создания потока необходимо выполнить следующие действия: создать новый проект, разместить на форме все необходимые компоненты и добавить требуемый код; выполнить тему меню File/New/Thread Object, задать имя класса поток. После выполнения этих действий Delphi создаст новый модуль-шаблон для потока; сохранить этот модуль под требуемым именем в папке проекта; новый модуль добавить в предложение uses там, гже это необходимо; добавить в модуль (потока) требуемый код.

В сгенерированном Delphi модуле-заготовке присутствует описание класса TThread с одним единственным методом Execute. unit В сгенерированном Delphi модуле-заготовке присутствует описание класса TThread с одним единственным методом Execute. unit Unit 1; interface uses Classes; type My. Thread = class(TThread) private { Private declarations } protected procedure Execute; override; end; implementation (My. Thread} procedure My. Thread. Execute; begin { Пожалуйста, поместите код потока в этом месте } end; end. С этого метода, который нет необходимости вызывать "напрямую", начинается выполнения потока. Но еще раньше поток необходимо создать с помощью конструктора Create.

Программирование потока ничем не отличается от программирования обычной программы за одним важным исключением: поток Программирование потока ничем не отличается от программирования обычной программы за одним важным исключением: поток не должен использовать методы и свойства визуальных компонентов, которые приводят к изменению внешнего вида программа Точнее, он может это делать только при обращении к специальному методу Synchronize, с помощью которого осуществляется синхронизация исполнения главного потока программы с дополнительным потоком.

Методы потока кода Класс TThread является производным от класса TObject и включает 9 методов, Методы потока кода Класс TThread является производным от класса TObject и включает 9 методов, приведенных в таблице:

Если в потоке будет выполняться какой-то цикл, и поток должен завершиться вместе с приложением, Если в потоке будет выполняться какой-то цикл, и поток должен завершиться вместе с приложением, то условия окончания цикла должны быть примерно такими: procedure TMy. Thread. Execute; begin repeat Do. Something; Until Cancel. Condition or Terminated; end; Здесь Cancel. Condition — ваше личное условие завершения потока (исчерпание данных, окончание вычислений, поступление на вход того или иного символа и т. п. ), а свойство Terminated сообщает о завершении потока (это свойство может быть установлено как изнутри потока, так и извне; скорее всего, завершается породивший его процесс).

Конструктор объекта: constructor Create(Create. Suspended: Boolean); получает параметр Create. Suspended. Если его значение равно Конструктор объекта: constructor Create(Create. Suspended: Boolean); получает параметр Create. Suspended. Если его значение равно True, вновь созданный поток не начинает выполняться до тех пор, пока не будет сделан вызов метода Resume. В случае, если параметр Create. Suspended имеет значение False, конструктор завершается и только затем поток начинает исполнение.

destructor Destroy; override; Деструктор Destroy вызывается, когда необходимость в созданном потоке отпадает. Деструктор завершает destructor Destroy; override; Деструктор Destroy вызывается, когда необходимость в созданном потоке отпадает. Деструктор завершает его и высвобождает все ресурсы, связанные с объектом TThread. function Terminate: Integer;

Для окончательного завершения потока (без последующего запуска) существует метод Terminate. Но если вы думаете, Для окончательного завершения потока (без последующего запуска) существует метод Terminate. Но если вы думаете, что этот метод делает какие-то принудительные действия по остановке потока, вы ошибаетесь. Все, что происходит, — это установка свойства property Terminated: Boolean; в значение True. Таким образом, Terminate — это указание потоку завершиться, выраженное "в мягкой форме", с возможностью корректно освободить ресурсы. Если вам нужно немедленно завершить поток, используйте функцию Windows API Terminate. Thread.

Свойства потока кода Свойства потока кода

Метод Synchronize гарантирует, что к любому объекту VCL одновременно получит доступ только один поток. Метод Synchronize гарантирует, что к любому объекту VCL одновременно получит доступ только один поток. Одновременный доступ к объекту VCL двух и более потоков может вызвать непредсказуемые последствия. Метод потока, который содержит обращение к какому-либо объекту VCL, не может иметь параметров и должен быть передан процедуре Synchronize в качестве параметра, например: Procedure Show. Number; Begin Edit 1. Text: =Int. To. Str(Number); End; … Synchronize(Show. Number);

Еще один способ синхронизации выполнения потоков можно реализовать с помощью функции Function Wait. For Еще один способ синхронизации выполнения потоков можно реализовать с помощью функции Function Wait. For : integer; Например, при наличии потоков Thread 1 и Thread 2 выполнение в потоке Thread 1 оператора Code: =Thread 2. Wait. For приведет к приостановке выполнения потока Thread 1 до завершения потока Thread 2, а значение переменной Code будет установлено равным Thread 2. Return. Value.

Список использованной литературы Иан Грэхем Объектно-ориентированные методы. Принципы и практика = Object. Oriented Methods: Список использованной литературы Иан Грэхем Объектно-ориентированные методы. Принципы и практика = Object. Oriented Methods: Principles & Practice — 3 -е изд. — М. : «Вильямс» , 2004. — С. 880. 2. Антони Синтес Освой самостоятельно объектно-ориентированное программирование за 21 день = Sams Teach Yourself Object-Oriented Programming in 21 Days — М. : «Вильямс» , 2002. — С. 672. 1.