IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Управление процессами (потоками)!, В программе сделать следующие изменения!!
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 55
Пол: Мужской

Репутация: -  -1  +


Люди дайте совет или обьясните,где в листинге нужно сделать следующие изменения:
1. Ввести глобальную переменную для семафора типа integer
2. Разместить кнопки ПУСК 1 и ПУСК 2 для запуска первого и второго потоков (нитей), перед этим устанавливается семафор в положение "занято"
3. Разместить кнопки СТОП 1 и СТОП 2 для остановки первого и второго потоков (нитей), устанавливается семафор в положение "свободно"
4. Кнопка ПУСК 1 задает для первого потока самый низкий приоритет
5. Кнопка ПУСК 2 задает для второго потока самый высокий приоритет
Код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
Button1: TButton;
ScrollBar1: TScrollBar;
procedure Button1Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure RadioButton5Click(Sender: TObject);
procedure RadioButton6Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//поток1
TThread1 = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure DoSomething;
end;
//поток2
TThread2 = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure DoSomething;
end;
var
Form1: TForm1;
T1:TThread1;
T2:TThread2;
implementation
{$R *.DFM}
//тело потока
procedure TThread1.Execute;
begin
repeat
Synchronize(DoSomething); //синхронизирует поток с программой
until terminated;
end;
procedure TThread1.DoSomething;
begin
Form1.ScrollBar1.Position:=10;
end;
procedure TThread2.Execute;
begin
repeat
Synchronize(DoSomething);
until terminated;
end;
procedure TThread2.DoSomething;
begin
Form1.ScrollBar1.Position:=90;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
T1:=TThread1.Create(false); //создать поток1
T2:=TThread2.Create(false); //создать поток2
RadioButton2.Checked:=true; // прио tpNormal
RadioButton5.Checked:=true; // прио tpNormal
Button1.Enabled:=false;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if (sender as TRadioButton).Checked then
begin
T1.Priority:=tpLowest;
RadioButton6.Enabled:=true;
end;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
if (sender as TRadioButton).Checked then
begin
T1.Priority:=tpNormal;
RadioButton6.Enabled:=true;
end;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
if (sender as TRadioButton).Checked then
begin
T1.Priority:=tpHighest;
RadioButton6.Enabled:=false;
end;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
if (sender as TRadioButton).Checked then
begin
T2.Priority:=tpLowest;
RadioButton3.Enabled:=true;
end;
end;
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
if (sender as TRadioButton).Checked then
begin
T2.Priority:=tpNormal;
RadioButton3.Enabled:=true;
end;
end;
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
if (sender as TRadioButton).Checked then
begin
T2.Priority:=tpHighest;
RadioButton3.Enabled:=false;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
T1.Suspend; T2.Suspend;
T1.Terminate; T1.Free;
T2.Terminate; T2.Free;
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.11.2020 14:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name