Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2007, 11:09   #1
metamfetamin
Пользователь
 
Аватар для metamfetamin
 
Регистрация: 02.11.2007
Сообщений: 68
По умолчанию Управление потоками. Запуск, остановка, приоритет потока.

Люди дайте совет или обьясните,где в листинге нужно сделать следующие изменения:
1. Ввести глобальную переменную для семафора типа integer
2. Разместить кнопки ПУСК 1 и ПУСК 2 для запуска первого и второго потоков (нитей), перед этим устанавливается семафор в положение "занято"
3. Разместить кнопки СТОП 1 и СТОП 2 для остановки первого и второго потоков (нитей), устанавливается семафор в положение "свободно"
4. Кнопка ПУСК 1 задает для первого потока самый низкий приоритет
5. Кнопка ПУСК 2 задает для второго потока самый высокий приоритет
код Pascal/Delphi

Код:
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.

Последний раз редактировалось metamfetamin; 11.11.2007 в 12:46.
metamfetamin вне форума Ответить с цитированием
Старый 11.11.2007, 12:16   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Ну неужели так сложно оформить код в более читаемом виде?
Глобальные переменные вводятся в разделе VAR.
Кнопки добавляются в режиме Design-time т.е. в окне редактора.
Alex21 вне форума Ответить с цитированием
Старый 11.11.2007, 12:29   #3
metamfetamin
Пользователь
 
Аватар для metamfetamin
 
Регистрация: 02.11.2007
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Ну неужели так сложно оформить код в более читаемом виде?
Непонял????Что значит в более читаемом виде??? Все же вроде правильно, все заключено в CODE????

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Глобальные переменные вводятся в разделе VAR.
То что они описываются в разделе VAR понятно........но дальше в программе они ж где то используются.......не просто так же ми их вводим???

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Кнопки добавляются в режиме Design-time т.е. в окне редактора
А какие кнопки, и что ето за режим????
metamfetamin вне форума Ответить с цитированием
Старый 11.11.2007, 12:33   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Все же вроде правильно, все заключено в CODE????
За code вам спасибо! только зачем все выравнивать по левому краю? Чтобы что-то разобрать надо прикладывать нечеловеческие усилия. Надо привыкать сразу к красивому (правильному) оформлению программного кода.
Цитата:
То что они описываются в разделе VAR понятно........но дальше в программе они ж где то используются.......не просто так же ми их вводим???
Какая постановка вопроса - такой и ответ.
Цитата:
А какие кнопки, и что ето за режим????
Обычный режим работы с проектом. Запускаем файл с расширением .DPR и добавляем на форму компоненты. Двойным кликом переходим на описание свойств для Buttona - OnClick.

p.s.: уточняем вопрос.
Alex21 вне форума Ответить с цитированием
Старый 11.11.2007, 12:34   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Непонял????Что значит в более читаемом виде??? Все же вроде правильно, все заключено в CODE????
Это значит, что хотя бы процедуры отделены друг от друга пустой строкой, а не идут сплошь друг за дружкой, как компоненты винегрета.
Цитата:
А какие кнопки, и что ето за режим????
Это тот самый режим, когда кнопки берутся с палитры компонентов и расставляются на форме.
mihali4 вне форума Ответить с цитированием
Старый 11.11.2007, 12:45   #6
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
Смущение

metamfetamin качаешь по ссылке книгу 100 компонентов Delphi А. Я. Архангельский.: http://www.programmersclub.ru/files/book1_100comp.rar и читаешь очень внимательно.

Цитата:
Глава 1. Основы разработки прикладных программ в Delphi
1.1 Интегрированная среда разработки Delphi 5
1.2 Структура кода модуля
1.3 Программный доступ к свойствам и методам объектов

P.S.: Это решит большинство твоих проблем.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приоритет процесса P@SH@ Win Api 9 13.05.2014 21:48
Приоритет Михаил Юрьевич Win Api 5 15.07.2008 23:23
Ricoh Aficio FX200, замятие(остановка печати) PDVich Компьютерное железо 0 07.05.2008 10:22
Приоритет чужого процесса (консультация) Air Win Api 9 06.03.2008 20:05
Остановка ADODS при OnFetchProcess QuAlex БД в Delphi 0 04.10.2007 17:31