Реферат

Реферат Разработка многопоточных Windows-приложений в среде Borland C Builder

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024





            МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
                                                                                              Кафедра АСУ
Отчёт

к индивидуальному домашнему заданию

по ТП

на тему:
«Разработка многопоточных
W
indows-приложений


в среде
Borland

C
++
Builder

»


Вариант №7
Выполнил              студент группы ИУС-04б

Ващилко Валентин
                                                             Проверили                       Землянская С.Ю.

Петров А.В.
Донецк 2007

            Цель работы: Изучение способов создания и управления потоками в программах, разрабатываемых в среде Borland C++ Builder. Изучение и использование методов взаимодействия потоков и визуальных компонентов библиотеки VCL.

Методические указания:




С использованием среды визуального программирования Borland C++ Builder разработать и отладить многопоточное приложение, в котором необходимо предусмотреть следующее:

а) создать 3 вторичных объекта-потока, производных от класса TThread (1-й поток должен быть в запущенном состоянии, 2-й и 3-й – в приостановленном состоянии). В каждом из потоков описать функции вывода информации на соответствующие формы. Вызов этих функций будет производиться из метода  Execute() соответствующего потока в бесконечном цикле, с помощью функции Synchronize() с периодичностью (задержкой) 0,1 сек;

б) разработать 3 формы (главную форму приложения и 2 формы) для взаимодействия с указанными потоками;

в) главная форма приложения должна быть размещена в центре экрана и состоять из 4-х частей: в верхней части должна быть надпись с информацией о данной работе (дисциплина, № работы, группа, ФИО студента), ниже постоянно выводится динамически изменяющаяся текстовая (числовая) информация или графическая фигура, выполняемые в 1-м вторичном потоке. В нижней половине формы должны располагаться 2 панели для управления 2-м и 3-м созданными потоками. Внизу формы помещается кнопка "Выход".

г) на каждой панели вверху помещается название потока, а ниже размещаются компоненты для отображения состояния и управления соответствующим потоком. Информация о потоке (запущен, приостановлен, завершен) выводится с помощью компонентов Label. Управление потоком производится с помощью кнопок с названиями "Запустить", "Приостановить", "Завершить". Изменение приоритета потока может производиться с помощью компонентов типа ComboBox, ListBox, RadioGroup по выбору студента.

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




Вар-та

Действия, выполняемые в потоках и отображаемые на формах

Поток 1

Поток 2

Поток 3

7

Компонент ScrollBar на форме циклически показывает плавное  движение ползунка.

Последовательность цифр, выведенная с помощью компонента Label циклически сдвигается справо-налево, образуя "бегущие числа".

Графическая фигура одного вида (компонент Shape) на форме  изменяет свои размеры от min до max, а потом наоборот.




Unit1.cpp

//---------------------------------------------------------------------------
#include <vcl.h>

#pragma hdrstop
#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "T2.h"

#include "T1.h"

#include "T3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

T1 *Thread1=new T1(false); // Поток 1 создан и запущен

T2 *Thread2=new T2(true); // Поток 2 создан и не запущен

T3 *Thread3=new T3(true); // Поток 3 создан и не запущен

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)

{

  Label9->Caption="Запущен";

  Form2->Show();

  Thread2->Resume();

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)

{

  Label9->Caption="Приостановлен";

  Thread2->Suspend();

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)

{

  Label9->Caption="Завершён";

  Thread2->Terminate();

  Form2->Close();       

}

//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)

{

 switch (RadioGroup1->ItemIndex)

  {

   case 0: Thread2->Priority=tpLowest;

         break;

   case 1: Thread2->Priority=tpNormal;

         break;

   case 2: Thread2->Priority=tpHighest;

         break;

 }

}

//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)

{

 switch (ComboBox1->ItemIndex)

  {

  case 0: Thread3->Priority=tpLowest;

         break;

  case 1: Thread3->Priority=tpNormal;

         break;

  case 2: Thread3->Priority=tpHighest;

         break;

 }

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)

{

  Label10->Caption="Запущен";

  Form3->Show();

  Thread3->Resume();

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)

{

  Label10->Caption="Приостановлен";

  Thread3->Suspend();

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)

{

  Label10->Caption="Завершён";

  Thread3->Terminate();

  Form3->Close();

}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)

{

  exit(1);

}

//---------------------------------------------------------------------------

Unit2.cpp

//---------------------------------------------------------------------------
#include <vcl.h>

#pragma hdrstop
#include "T2.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------
Unit3.cpp

//---------------------------------------------------------------------------
#include <vcl.h>

#pragma hdrstop
#include "Unit3.h"

#include "T3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------
T1.cpp

//---------------------------------------------------------------------------
#include <vcl.h>

#pragma hdrstop
#include "Unit1.h"

#include "T1.h"

#pragma package(smart_init)

//---------------------------------------------------------------------------
__fastcall T1::T1(bool CreateSuspended)

        : TThread(CreateSuspended)

{

}

//---------------------------------------------------------------------------

void __fastcall T1::OutOnForm1()

{   static  int i=2;
Form1->ScrollBar1->Position+=i;

if (Form1->ScrollBar1->Position == 100)

{Form1->ScrollBar1->Position=0;}
}

//---------------------------------------------------------------------------

void __fastcall T1::Execute()

{

       for (;;)

 {

  Synchronize(OutOnForm1);

  Sleep(100);

  }

}

//---------------------------------------------------------------------------
T2.cpp

//---------------------------------------------------------------------------
#include <vcl.h>

#pragma hdrstop
#include "Unit1.h"

#include "T2.h"

#include "Unit2.h"

#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall T2::T2(bool CreateSuspended)

        : TThread(CreateSuspended)

{

}

//---------------------------------------------------------------------------

void __fastcall T2::OutOnForm2()

{   static  int i=10;
Form2->Label1->Left-=i ;

if (Form2->Label1->Left < -160)

{Form2->Label1->Left=370;}
}

//---------------------------------------------------------------------------

void __fastcall T2::Execute()

{

      for (;;)

 {

  Synchronize(OutOnForm2);

  Sleep(150);

 }

}

//---------------------------------------------------------------------------
T3.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop
#include "T3.h"

#include "Unit1.h"

#include "Unit3.h"

#pragma package(smart_init)

//---------------------------------------------------------------------------

__fastcall T3::T3(bool CreateSuspended)

        : TThread(CreateSuspended)

{

}

//---------------------------------------------------------------------------

void __fastcall T3::OutOnForm3()

{   static  int i=5;

    static  int k;

    static  int f=0;
 if (f==0)

  {

   for (k=40;k<=100;k+=5);

    {

     Form3->Shape1->Width+=i;

     Form3->Shape1->Height+=i;

     if (Form3->Shape1->Width==100) {f=1;} ;

    };

   };
 if(f==1)

 {

   for (k=100;k>=40;k-=5);

    {

     Form3->Shape1->Width-=i;

     Form3->Shape1->Height-=i;

     if (Form3->Shape1->Width==40) {f=0;} ;

    };

   };

}

//---------------------------------------------------------------------------

void __fastcall T3::Execute()

{

      for (;;)

 {

  Synchronize(OutOnForm3);

  Sleep(150);

 }

}

//---------------------------------------------------------------------------

1. Презентация Акмеизм как литературное направление 2
2. Курсовая на тему Формування готовності до оволодіння самостійним писемним мовленням у молодших школярів з тяжкими
3. Реферат Внутридомовая сеть газопровода
4. Курсовая на тему Расходы бюджетов на здавоохранение
5. Доклад Структурная асимметрия мозга у музыкантов
6. Реферат на тему Символика цвета
7. Биография Аршеневский, Пётр Исаевич
8. Диплом на тему Налогообложение населения в РФ и за рубежом
9. Реферат на тему Женщина в политике
10. Курсовая на тему Проектирование и модернизация цеха