Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 1.4.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. Реферат на тему Способы измерения влияния факторов в детерминированном анализе
3. Реферат на тему Что изучает экономическая теория
4. Курсовая на тему Захист програмного забезпечення
5. Статья Молодежь малого города кризис самоопределения
6. Контрольная работа КР синтез различных школ экономического анализа
7. Курсовая на тему Учебная мотивация подростков
8. Реферат на тему Hinduism And Budism Essay Research Paper Hinduism
9. Реферат на тему Assimilation And Pride Essay Research Paper Henry
10. Реферат на тему If I Won The Lottery Essay Research