Проект лабораторной №1 «Исследование диспетчеризации процессов и потоков»

  • Построить приложение для запуска приложения, путь и имя которого можно задавать в диалоговом окне. Для запуска приложения используйте функцию WinExec().
  • То же самое сделать при помощи функции CreateProcess.
  • Построить приложение, рассмотренное в примере 1, проверить его работу.
  • Добавить в разработанное приложение средства получения количественных характеристик количества вычислений. Использовать: обычное усреднение за N секунд;

Код из примера 1 выполнен на Delphi

1.	Создайте новое приложение - на форму положите два компонента Edit, два компонента TrackBar  (страница Win32) и один компонент Timer.
2.	Сохраните модуль как ThrdUnit, а проект как ThrdProj.
3.	Откройте меню File и выберите пункт New. Выполните двойной щелчок на объекте типа поток (Thread Object).
4.	В открывшемся диалоговом окне для именования объекта введите  TsimpleThread и нажмите Enter. Delphi создаст шаблон для нового потока.
5.	В приведенный ниже фрагмент шаблона 
 type
  TsimpleThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
добавьте описание переменной для подсчета количества выполненных вычислений (перед end):  Count : Integer;
6.	Определите метод Execute следующим образом (вычисление суммы 10 случайных чисел)
        procedure TsimpleThread.Execute;
            { Place thread code here }
      var I, total : Integer;
       begin
        while true do
          begin
             Total:=0;
              for I:=1 to 10 do   Inc(Total,Random(MaxInt div 10));
           Inc (Count);
        end;
     end;
7.	Сохраните модуль с потоком как  Thrd.pas
8.	Отредактируйте главный файл модуля  ThrdUnit.pas - добавьте модуль Thrd к списку используемых модулей ( uses …, Thrd)
9.	В секции public формы  Tform1  добавьте строку
          Thread1, Thread2 : TsimpleThread;
10.	 Создайте обработчики событий приложения по приведенному ниже тексту.
     procedure TForm1.Timer1Timer(Sender: TObject);
      begin
       Edit1.Text := IntToStr( Thread1.Count );
       Edit2.Text := IntToStr( Thread2.Count );
       Thread1.Count := 0;
       Thread2.Count := 0;
      end;

     procedure TForm1.FormCreate(Sender: TObject);
      begin
       Thread1 := TSimpleThread.Create( False );
       Thread1.Priority := tpLowest;
       Thread2 := TSimpleThread.Create( False );
       Thread2.Priority := tpLowest;
      end;

     procedure TForm1.TrackBar1Change(Sender: TObject);
       var  I : Integer;
       Priority : TThreadPriority;
     begin
       Priority := tpLowest;
       For I := 0 To ( Sender as tTrackBar ).Position - 1  Do  inc( Priority );
       If Sender = TrackBar1  Then   Thread1.Priority := Priority
                            Else   Thread2.Priority := Priority;
     end;

11.	Чтобы связать метод, созданный на шаге 10, со вторым регулятором, выберите  TrackBar2 в окне ObjectInspector и определите для события OnChange метод  TrackBar1Change.
12.	Свойству Max обоих компонентов TrackBar установите  значение 4 (или 3). Это необходимо сделать для того, чтобы устанавливаемое значение приоритета потока не было слишком большим. В противном случае приложение выйдет из-под контроля. 
13.	Запустите созданное приложение, предварительно сохранив его на диске.  

Проекты выполнены на C# c сохранением всех условий в задаче, используется WinApi стоимость решения 200 руб. Приобрести его можно у меня связавшись со мной в вконтакте или email

Номер проекта 210

hamany@yandex.ru

Обновлено: 15.09.2021 — 12:07

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.