- Построить приложение для запуска приложения, путь и имя которого можно задавать в диалоговом окне. Для запуска приложения используйте функцию 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