
- •Министерство образования и науки российской федерации федеральное агентство по образованию
- •Кафедра систем автоматизированного проектирования
- •Введение
- •1.2.2. Пользовательский интерфейс
- •1.2.3. Файловые системы
- •1.3. Порядок выполнения работы
- •1.4. Содержание отчета
- •Цель работы.
- •1.5. Контрольные вопросы и задания
- •2. Лабораторная работа № 2 «Утилиты ос Windows xp»
- •2.1. Цель работы:
- •2.2. Теоретическая часть
- •2.2.1. Программа получения сведений о системе
- •2.2.2. Программа архивации данных
- •2.2.3. Программа проверки диска
- •2.2.4. Программа дефрагментации дисков
- •2.2.5. Программа очистки жесткого диска
- •2.2.6. Программа «Восстановление системы»
- •2.3. Порядок выполнения работы
- •2.4. Содержание отчета
- •2.5. Контрольные вопросы и задания
- •3.2.2. Команды для работы с файлами и папками
- •3.2.3. Внутренние команды
- •3.2.4. Команды (поддержки) пакетных файлов
- •If exist *.Rpt echo Отчет получен.
- •3.3. Порядок выполнения работы
- •3.4. Содержание отчета
- •Цель работы.
- •3.5. Контрольные вопросы и задания
- •4. Лабораторная работа № 4 «Настройка и оптимизация среды Windows xp»
- •4.1. Цель работы:
- •4.2. Теоретическая часть
- •4.2.1. Индивидуальная настройка рабочего стола
- •4.2.2. Диспетчер задач (Task Manager)
- •4.2.3. Планировщик заданий (Task Scheduler)
- •4.2.4. Средства поддержки виртуальной памяти
- •4.2.5. Другие средства оптимизации
- •4.3. Порядок выполнения работы
- •4.4. Содержание отчета
- •Цель работы.
- •4.5. Контрольные вопросы и задания
- •5.2.2. Синхронизация потоков
- •5.2.3. Создание многопоточных приложений
- •5.2.4. Синхронизация порожденного потока с родительским
- •5.2.5. Управление приоритетом обслуживания потока
- •5.2.6. Приостановка и продолжение работы потока
- •5.3. Порядок выполнения работы
- •5.4. Содержание отчета
- •Цель работы.
- •5.5. Контрольные вопросы и задания
- •Приложение 1. Оформление отчета по лабораторной работе
- •1. Цель работы.
- •Приложение 2. Оформление реферата по выбранной теме
- •Приложение 3. Фрагменты текста программы
- •Void __fastcall Synhr1();// вызывается
- •Void __fastcall Synhr2();// вызывается
- •Int X,y; // Хранит координаты шарика
- •Библиографический список (Учебники и учебные пособия)
- •(Общие вопросы)
- •(Графический интерфейс пользователя)
- •(Семейство Windows)
5.2.3. Создание многопоточных приложений
Представление потока в C++ Builder. В C++ Builder потоки представляются объектами. Чтобы создать поток, необходимо породить новый класс от класса TThread (он объявлен в заголовочном файле Classes.hpp), перекрыть в нем виртуальный метод Execute и поместить в этот метод программный код потока.
Запуск потока осуществляется путем создания объекта такого класса. В момент создания объекта автоматически вызывается метод Execute, который начинает выполняться одновременно с участком кода, создавшим поток. После работы метода Execute поток автоматически завершается и объект потока уничтожается.
Следующие шаги показывают, как организовать в приложении новый поток.
Начните новое приложение и сохраните его под именем Threads. Модуль формы сохраните под именем Main.
Д
ля того чтобы создать в проекте новый класс потока, выберите в меню «File» пункт «New». Появится окно диалога «New Items». На вкладке «New» выберите элемент «Thread Object» и щелкните по кнопке ОК (рис.44).
Рис.44
На экране появится диалог «New Thread Object», в котором следует ввести имя класса. Придерживаясь принятых соглашений, введите имя, начинающееся с большой буквы Т, например TMyThread, и завершите диалог щелчком на кнопке ОК (рис.45).
Р
ис.45
Среда C++ Builder создаст следующий скелет модуля с объявлением класса потока.
Файл Unit.h:
// -------------------------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
// -------------------------------------------------------------------------------------------
#include <vcl\Classes.hpp>
// -------------------------------------------------------------------------------------------
class THyThread : public TThread
{
private:
protected:
void __fastcall Execute();
public:
__fastcall TmyThread (bool CreateSuspended) ;
};
// -------------------------------------------------------------------------------------------
#endif
Файл Unit1.cpp:
#include <vcl\vcl.h>
#pragma hdrstop
#include "unit1.h"
// -------------------------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdataCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall TMyThread::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
// -------------------------------------------------------------------------------------------
__fastcall TMyThread::TMyThread(boot CreateSuspended) : TThread(CreateSuspended)
{
}
// -------------------------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{
// ---- Place thread code here ----
}
Сохраните этот модуль под именем MyThrd. В модуле объявлен класс TMyThread, порожденный от класса TThread. Класс TThread является базовым для всех потоков и имеет ряд свойств и методов, используемых для их управления. Самый важный из них – метод Execute. Он всегда перекрывается в наследниках и содержит код потока, выполняемый одновременно с кодом главной программы. Вызов метода Execute происходит автоматически при конструировании объекта потока.