Форум Херсона. Форум Херсонской молодежи, флейм, фотографии Херсона, политика в Херсоне, сетевой форум, сети Херсона


Приветствуем на Форум Херсона. Форум Херсонской молодежи..

На данный момент Вы находитесь на форуме как Гость и имеете очень ограниченные возможности и права. Что бы писать или отвечать в темах, загружать картинки, файлы на форуме Вам нужно зарегистрироваться, что совершенно бесплатно. Регистрация очень быстрая, не откладывайте эту процедуру!

Если возникнут проблемы с регистрацией напишите нам.

Галерея форума Блоги пользователей Список банов
Вернуться   Форум Херсона. Форум Херсонской молодежи. > >
Регистрация СправкаСтатистика Пользователи Календарь Сообщения за день

Программирование Все вопросы по написанию программ

Ответ
 
Опции темы
Старый 24.04.2008, 21:22   #1 (Ссылка на пост)
Извините, я на тракторе!
 
Аватар для Debian
Пол:
 
Активность Longevity
0/20 19/20
Today Сообщения
0/5 ssss10164
Адрес: Вот там вот и живем...
Благодарил(а): 3,010
Благодарили 12,134 раз в 3,551 постах
Записей в дневнике: 21
Галерея: 2
Вес репутации: 149 Debian скоро в модераторы
Debian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторы
Отправить сообщение для  Debian с помощью ICQ
Приоритеты потоков в Delphi

Решил поиграться с потоками, наваял на дельфе прогу
поток крутит цикл от 0 и до 1000000 и результат плюет на сом порт...

смутил меня тот факт, что когда окно программы начинаеш сворачивать-разворачивать, или размеры менять или в некоторых случаях просто мышку шевелиш поток подвисает на очень короткое время, а потом снова начинает выполяться...
ставил все приоритеты вплоть до
Priority:=tpTimeCritical
стало лучше но всеравно есть сбои при манипуляции с формой... как можно это убрать? тоесть надо чтобы прога слала данные на порт постоянно и синхронно независимо от манупуляций на компьютере
__________________
Какая разница из какого места растут руки, если они золотые.
Debian вне форума  
Ответить с цитированием
Старый 24.04.2008, 21:23   #2 (Ссылка на пост)
Извините, я на тракторе!
 
Аватар для Debian
Пол:
 
Активность Longevity
0/20 19/20
Today Сообщения
0/5 ssss10164
Адрес: Вот там вот и живем...
Благодарил(а): 3,010
Благодарили 12,134 раз в 3,551 постах
Записей в дневнике: 21
Галерея: 2
Вес репутации: 149 Debian скоро в модераторы
Debian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторы
Отправить сообщение для  Debian с помощью ICQ
да, все потоки синхронизированны как просит литература
__________________
Какая разница из какого места растут руки, если они золотые.
Debian вне форума  
Ответить с цитированием
Старый 24.04.2008, 21:27   #3 (Ссылка на пост)
Модератор
Пол:
 
Активность Longevity
0/20 18/20
Today Сообщения
0/5 ssss11242
Благодарил(а): 2,807
Благодарили 19,030 раз в 5,788 постах
Галерея: 15
Вес репутации: 217 zwitter скоро в модераторы
zwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторы
VCL не есть thread-safe. рисовать через Synchronize
zwitter вне форума  
Ответить с цитированием
Сказали Спасибо пользователю zwitter за этот пост:
Debian (24.04.2008)
Старый 24.04.2008, 21:35   #4 (Ссылка на пост)
Извините, я на тракторе!
 
Аватар для Debian
Пол:
 
Активность Longevity
0/20 19/20
Today Сообщения
0/5 ssss10164
Адрес: Вот там вот и живем...
Благодарил(а): 3,010
Благодарили 12,134 раз в 3,551 постах
Записей в дневнике: 21
Галерея: 2
Вес репутации: 149 Debian скоро в модераторы
Debian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторы
Отправить сообщение для  Debian с помощью ICQ
рисую через Synchronize

пример:
Код:
...

implementation
uses unit3;

{$R *.dfm}

procedure TForm1.OUT1;
begin
i:=i+1;
Label1.caption:=IntToStr(i);
end;

procedure TForm1.OUT2;
begin
i:=i+1;
RS232Port.sendStr(intToStr(i));
Label2.caption:=IntToStr(i);
ProgressBar1.Position:=i;
end;

procedure TForm1.Button1Click(Sender: TObject);
var P1:TMyThread;
begin

P1:=TMyThread.Create(false);
P1.Priority:=tpNormal;
Button1.Enabled:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
var P1:TMyThread;
begin
J:=False;
P1.Terminate;
Button1.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
var P1:TMyThread;
begin
J:=True;
end;
end.
пример потока:

Код:
unit Unit3;

interface

uses
  Classes;

type
  TThreadMethod = procedure of object;
  TMyThread = class(TThread)

  procedure Update1;
  procedure Update2;

  private
       { Private declarations }
  protected
    procedure Execute; override;

  end;

implementation
uses unit1, SysUtils;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TMyThread.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TMyThread }


Procedure TMyThread.Update1;
begin
Form1.OUT1;
end;

Procedure TMyThread.Update2;
begin
Form1.OUT2;
end;


procedure TMyThread.Execute;
var k:integer;
begin
While not Form1.j=True  do begin
sleep(10);
Synchronize(Update1);
Synchronize(Update2);
end;
end;
end.
вроде правильно
__________________
Какая разница из какого места растут руки, если они золотые.

Последний раз редактировалось Debian, 24.04.2008 в 21:45.
Debian вне форума  
Ответить с цитированием
Старый 24.04.2008, 22:59   #5 (Ссылка на пост)
Модератор
Пол:
 
Активность Longevity
0/20 18/20
Today Сообщения
0/5 ssss11242
Благодарил(а): 2,807
Благодарили 19,030 раз в 5,788 постах
Галерея: 15
Вес репутации: 217 zwitter скоро в модераторы
zwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторы
а почему ты объект потока в каждой процедуре локальным делаешь ?
procedure TForm1.Button1Click(Sender: TObject);
var P1:TMyThread;

procedure TForm1.Button2Click(Sender: TObject);
var P1:TMyThread;

procedure TForm1.Button3Click(Sender: TObject);
var P1:TMyThread;

объяви его в классе формы.
zwitter вне форума  
Ответить с цитированием
Старый 24.04.2008, 23:05   #6 (Ссылка на пост)
Модератор
Пол:
 
Активность Longevity
0/20 18/20
Today Сообщения
0/5 ssss11242
Благодарил(а): 2,807
Благодарили 19,030 раз в 5,788 постах
Галерея: 15
Вес репутации: 217 zwitter скоро в модераторы
zwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторыzwitter скоро в модераторы
к тому же вместо While not Form1.j=True do begin
следует написать while not terminated do begin
тогда метод thread.terminate отработает правильно
zwitter вне форума  
Ответить с цитированием
Старый 25.04.2008, 20:49   #7 (Ссылка на пост)
Извините, я на тракторе!
 
Аватар для Debian
Пол:
 
Активность Longevity
0/20 19/20
Today Сообщения
0/5 ssss10164
Адрес: Вот там вот и живем...
Благодарил(а): 3,010
Благодарили 12,134 раз в 3,551 постах
Записей в дневнике: 21
Галерея: 2
Вес репутации: 149 Debian скоро в модераторы
Debian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторыDebian скоро в модераторы
Отправить сообщение для  Debian с помощью ICQ
пасыба конечно
все работает но всеравно при нагрузке на систему идут сбои. видать прийдется ставить буффер дополнительный а так хотелось меньше пайки...

ЗЫ видать это проблема самой системы
в линуксе говорят все работает четко
__________________
Какая разница из какого места растут руки, если они золотые.
Debian вне форума  
Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей - 0 , гостей - 1)
 

Ваши права в разделе
Вы не можете создавать темы
Вы можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование на Delphi Evgenii Программирование 9 15.01.2008 01:04
Delphi - dll Shooter Программирование 3 19.12.2007 13:56
Delphi. MDI приложения Shooter Программирование 15 21.09.2007 10:33


Время на сервере: 20:57.

Регистрация Справка Пользователи Календарь Сообщения за день

vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co