- •Передача данных между процессами посредством сообщений
- •Задание
- •Программа работы
- •Использованные компоненты и методы программы “Source”:
- •Листинг программы “Dest” – приёмник сообщений
- •If not r then ShowMessage('Ошибка передачи сообщения.');
- •Использованные компоненты и методы:
- •Результат работы программ
- •Листинг заголовочного файла программы:
- •Лабораторная работа №2 Создание, запуск и управление процессами в многозадачной ос.
- •Листинг исполняемого файла программы:
- •Результат работы программы:
- •Листинг заголовочного файла программы:
- •Листинг исполняемого файла программы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
- •Лабораторная работа № 4 Синхронизация задач с помощью событий.
- •Программа работы:
- •Листинг заголовочного файла программы “source”:
- •Листинг исполняемого файла программы “source”:
- •Листинг заголовочного файла программы “dest”:
- •Результат работы программы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
Листинг исполняемого файла программы:
object Form1: TForm1
Left = 191
Top = 187
Width = 696
Height = 362
Caption = 'Form1'
Color = clBtnHighlight
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Gauge1: TGauge
Left = 0
Top = 32
Width = 449
Height = 25
Progress = 0
end
object Gauge2: TGauge
Left = 0
Top = 80
Width = 449
Height = 25
Progress = 0
end
object Gauge3: TGauge
Left = 0
Top = 128
Width = 449
Height = 25
Progress = 0
end
object Gauge4: TGauge
Left = 0
Top = 176
Width = 449
Height = 25
Progress = 0
end
object Image1: TImage
Left = 496
Top = 16
Width = 177
Height = 201
end
object BitBtn1: TBitBtn
Left = 56
Top = 248
Width = 75
Height = 25
Caption = 'Пуск'
TabOrder = 0
end
object BitBtn2: TBitBtn
Left = 304
Top = 248
Width = 75
Height = 25
Caption = 'Выход'
TabOrder = 1
OnClick = BitBtn2Click
object Timer1: TTimer
Left = 224
Top = 288
end
end
Результат работы программы:
Ответы на контрольные вопросы:
1.Какие действия необходимо выполнить для запуска новой нити?
Для запуска новой нити необходимо:
- описать либо переопределить новый объектный тип класса TThread;
- определить приоритет нити в рамка процесса;
- описать алгоритм, который будет реализовывать нить.
2. Могут ли нити одного процесса получить доступ к памяти, выделенной другому процессу?
Нет, т.к. нити имеют доступ только к ресурсам того приложения, которое их запустило.
3. Что такое “приоритет нити (задачи)”? Сколько приоритетов для нитей существует в ОС Windows? Чем отличается приоритет процесса от приоритета нити?
“Приоритет нити (задачи)” – это число, определяющее привилегию нити для доступа к ресурсам выделенным процессу.
В ОС Windows существует 7 приоритетов для нитей: tpIdle, tpLowest, tpLower, tpNormal, tpHiger, tpHigest, tpTimeCritical.
Основное отличие приоритета нити от процесса – приоритет нити не может быть выше приоритета процесса, запустившего её.
Вывод: выполняя данную лабораторную работу, изучил процесс создания и запуска для одновременного выполнения нескольких нитей с различными приоритетами в рамках одного процесса ОС Windows. Провёл эксперимент и пришёл к выводу, что нити с одинаковыми приоритетами работают с близкими скоростями, но не с равными. Разница в скорости работы нитей с разными приоритетами существенна.
Выполнил……………………………………………………….….Погодаев А.М.
Преподаватель……………………………………………………….Мохов В.А.
Лабораторная работа № 4 Синхронизация задач с помощью событий.
Цель: освоить технологию использования объектов-событий среде OC Windows.
Оборудование: ПЭВМ IBM PC-AT 486 и выше.
Программные средства: ОС Windows XP, C++ Builder 6, файл справочной документации по функциям API библиотеки WIN32 (Win32.hlp).
Задание: составить две программы, первая из которых должна следить за работой второй: вторая должна позволять пользователю вводить с клавиатуры и отображать в своем окне произвольные символы. Каждый раз, когда пользователь вводит в окне второй программы какой-либо символ, в окне контролирующей программы должен отображаться символ “*”. Задачу синхронизации отображения символов в окнах программ решить за счет создания и использования объектов-событий.
