Модель логически упорядоченных процессов

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

торного запуска впоследствии. Метод Suspend приостанавливает поток вне зависимости от кода, исполняемого потоком в данный момент; выполнение продолжается с точки останова.

Пример: procedure Suspend;

Suspended позволяет программисту определить, не приостановлен ли поток. С помощью этого свойства можно также запускать и останавливать поток. Установив suspended в True, вы получите тот же результат, что и при вызове метода Suspend - приостановку. Наоборот, установка Suspended в False возобновляет выполнение потока, как и вызов метода Resume.

Пример: property Suspended: Boolean;

Terminate; он останавливает(без последующего запуска) поток и возвращает управление вызвавшему процессу только после того, как это произошло. Значение, возвращаемое функцией Terminate, соответствует состоянию потока. Примерами возможных состояний являются случай нормального завершения и случай, когда к моменту вызова Terminate поток уже завершился (или был завершен из другого потока).

Пример: function Terminate: Integer;

Terminate автоматически вызывается и из деструктора объекта TThread. В явном виде его, за редким исключением, вызывать не надо.Свойство Terminated позволяет узнать, произошел ли уже вызов метода Terminate ИЛИ нет.

Пример: property Terminated: Boolean;

Метод WaitFor предназначен для синхронизации и позволяет одному потоку дождаться момента, когда завершится другой поток.

Пример: function WaitFor: Integer;

Если внутри потока под именем FirstThread есть код:

Code := SecondThread.WaitFor;

то это означает, что поток FirstThread останавливается до момента завершения потока SecondThread. Метод WaitFor возвращает код завершения ожидаемого потока.

Свойства Handle и ThreadID дают программисту непосредственный доступ к потоку средствами API. Если разработчик хочет обратиться к потоку и управлять им, минуя возможности класса TThread, значения Handle и ThreadID могут быть использованы в качестве аргументов функций API:

Пример: Property Handle: THandle read FHandle;

Пример: Property ThreadID: THandle read FThreadID;

Свойство Priority позволяет запросить и установить приоритет потоков. Приоритет определяет, насколько часто поток получает время процессора.

Пример: property Priority: TThreadPriority;

Допустимыми значениями приоритета являются :

otpIdle,

otpLowest,

otpLower,

otpNormal,

otpHigher,

otpHighest

otpTimeCritical.

Synchronize предназначен для безопасного вызова методов VCL внутри потоков. Во избежание ситуаций гонок, метод Synchronize дает гарантию, что к каждому объекту VCL одновременно имеет доступ только один поток.

Аргумент, передаваемый в метод Synchronize, - это имя метода, который производит обращение к VCL; вызов Synchronize с этим параметром - это то же, что и вызов самого метода. Такой метод (класса TThreadMethod) не должен иметь никаких параметров и не должен возвращать никаких значений.

Пример: procedure Synchronize(Method: TThreadMethod);

Execute: в его теле должен содержаться код, который и представляет собой собственно поток. Переопределяя метод Execute, мы можем тем самым закладывать в новый потоковый класс то, что будет выполняться при его запуске. Если поток был создан с аргументом СreateSuspended, равным False, то метод Execute выполняется немедленно, в противном случае Execute выполняется после вызова метода Resume.

Пример: procedure Execute;

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

Пример: Property ReturnValue: Integer;

 

.3 Программа, реализующая пример многопоточного приложения

 

В ходе выполнения программы используем тип многопоточности N:1 (Потоки выполнения уровня пользователя) предполагается, что все потоки выполнения уровня пользователя отображаются на единую планируемую сущность уровня ядра, и ядро ничего не знает о составе прикладных потоков выполнения. мы создаем 2 потока при нажатии на кнопку Start Thread мы запускаем 1 поток в котором выполняется вывод сообщение в соответствующую область и передаем управление в 2 поток который также выводит сообщение и останавливается.

Внешне программа имеет следующий интерфейс:

 

 

При выполнении:

 

 

 

Заключение

 

В ходе курсового проекта были рассмотрены основные элементы, проблемы и методы работы с потоками. Также была написана программа в которой была реализована Многопоточность.

 

 

Список литературы

 

1.Фаронов В. В. DELPHI, Программирование на языке высокого уровня. Учебник для вузов , СПБ.: Питер, 2007. - 640 с.

.Алексеев Е.Р., Чеснакова О.В. Турбо Паскаль 7.0, НТ Пресс, 2006г, 320с.

.Культин Н.Б., Основы программирования в Turbo Delphi, СПБ.: БХВ - Петербург 2007. 320с.

.Гордеев А. В. Операционные системы: Учебник для вузов. - 2-е изд. - СПб.: Питер, 2007. - 416 с.

.Олифер В. Г., Олифер Н. А. Сетевые операционные системы. - СПб.: Питер, 2002. - 544 с.

.Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. - СПб: БХВ-Петербург, 2002. - 608 с

7.,.< <http://ru.wikipedia.org/wiki/,_