Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.08.2011, 17:38
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию TThread, переменные из Form1 и быстродействие

такой вопрос

есть форма где объявлены разные переменные, а также объявлен Thread который описан выше
Код:
Form1= class(TForm)
...
  public
    { Public declarations }
    c:array of integer;
    cn:array of double;
    p:array of integer;
    A:array of integer;
    Ost:array of integer;
    N:integer;
    Thread1:TMyThread;
...

В методе Execute используются переменные из Form1

procedure TMyThread.Execute;
var ...
begin
....
while (not Terminated) do
begin
...
for i := 0 to Form1.N-1 do
   S1[index].F:=S1[index].F+Form1.F[i,(Form1.t0+j)mod 365]*Form1.c[i];]
... и т.д

Влияет ли это на эффективность работы Threadа?

Последний раз редактировалось lmikle, 04.08.2011 в 19:01.
Ответить с цитированием
  #2  
Старый 04.08.2011, 17:40
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Да, повлияет.
Из потока нельзя напрямую обращаться с VCL компонентам.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 04.08.2011, 18:19
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

однако это же паблик переменные, а не свойства с методами сет и гет
есть еще какие мнения?
Ответить с цитированием
  #4  
Старый 04.08.2011, 19:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,024
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо работать с переменными формы через Synchronize.
А еще, если несколько потоков, то и в критическую секцию "завернуть".
Ответить с цитированием
  #5  
Старый 04.08.2011, 21:15
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

о как

на самом деле уже был сделан рабочий процесс, и он нормально обращался к переменным в виде Form1.N без Synchronize.
Но на сколько это было эффективно, я смогу узнать когда сделаю вариант с копией переменных, объявленных в классе потока, чтобы обращалось сразу к N.
Хотел узнать если кто проводил такое сравнение.
В общем начал копировать переменные в класс потока, как доделаю и проведу сравнение быстродействия обязательно отпишусь.
Ответить с цитированием
  #6  
Старый 04.08.2011, 23:48
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

я при работе с потоками переменные кидаю сюды

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


и спокойно обращаюсь и из потока и из формы
Ответить с цитированием
  #7  
Старый 07.08.2011, 11:22
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

да без разницы где объявить переменные. "на глаз" не заметите, имхо. вот только если сразу несколько потоков с ними работают, то необходима синхронизация, через критические секции, к примеру.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 08.08.2011, 15:20
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

мне кажется тоже что нет существенной разницы
с проверкой этого вышла накладка, потому что задача отличается по трудоемкости
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter