Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

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





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

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

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

по ТП

на тему:
«Разработка многопоточных
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. Реферат на тему Generation X Essay Research Paper People think
3. Реферат Особенности организации оперативного планирования единичного производства
4. Реферат Бригада каменной стены
5. Реферат на тему George Balanchine Essay Research Paper 111300 One
6. Реферат К нам едет... делегация, или О тех, кто хуже татарина
7. Курсовая Расчет основных технологических параметров работы специализированных свиноводческих хозяйств
8. Реферат на тему Computers And Crime Essay Research Paper Computers
9. Реферат Воображение как вид психического процесса человека
10. Реферат Партії партійні системи країн світу