Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Управление процессами (потоками)!!!! В программе сделать следующие изменения 
:(
    Опции темы
metamfetamin
Дата 11.11.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Люди дайте совет или обьясните,где в листинге нужно сделать следующие изменения: 
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 MAIL   Вверх
Alexeis
Дата 11.11.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.