Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание обекта в потоке (Thread)


Страницы:   1 2 3 4 5 6

Tonich ©   (2006-07-04 01:26:00) 

Доброй ночи..
Такой вопрос, а в чем собственно различие между созданием объекта в Create и Execute класса TThread. При создании объекта в том или ином месте на выходе имею различные результаты.

Спасибо...


begin...end   (2006-07-04 18:38:00) [61]

> Пусик ©   (04.07.06 18:19) [43]

Это почему же "не пойдёт"?

Разве к объекту можно обращаться только из потока, в котором объект был создан? Вовсе необязательно.

Вы в [40] привели пример класса, экземпляры которого, по-Вашему, будут себя вести по-разному в зависимости от того, в каком потоке они созданы? Привели.

Так вот -- просьба привести пример, подтверждающий то, что экземпляры одного и того же класса, созданные в разных потоках, в одних и тех же условиях ведут себя по-разному.


Пусик   (2006-07-04 18:35:00) [62]


> DrPass ©   (04.07.06 18:21) [44]
> > Пусик ©   (04.07.06 18:19) [43] Delphi под рукой есть?
>  Попробуй, а?


Попробовать что?


DrPass   (2006-07-04 18:21:00) [63]


> Пусик ©   (04.07.06 18:19) [43]

Delphi под рукой есть? Попробуй, а?


Пусик   (2006-07-04 18:19:00) [64]


> begin...end ©   (04.07.06 17:30) [42]
> > Пусик ©   (04.07.06 17:25) [40]Ок, прекрасно. Итак, СОЗДАЁМ
> два экземпляра TMyClass в РАЗНЫХ потоках -- основном и дополнительном.
>  Теперь ОБРАЩАЕМСЯ к этим объектам из ОДНОГО потока (главного).
>


Не пойдет.
Обращение к объекту должно быть из того потока, в котором он создан.


begin...end   (2006-07-04 17:30:00) [65]

> Пусик ©   (04.07.06 17:25) [40]

Ок, прекрасно. Итак, СОЗДАЁМ два экземпляра TMyClass в РАЗНЫХ потоках -- основном и дополнительном. Теперь ОБРАЩАЕМСЯ к этим объектам из ОДНОГО потока (главного).

Просьба описать различия в поведении объектов при этом. Если не трудно.


Пусик   (2006-07-04 17:29:00) [66]


> > Игорь Шевченко ©   (04.07.06 17:13) [35]


За пост [24] прошу прощения, конечно. Но не более того.
Хочу заметить, что букварь используют по назначению не только ламеры и чайники.
За сим можно закончить.


Пусик   (2006-07-04 17:25:00) [67]


> И какие мне нужны усилия, чтобы это объект вел себя неодинаково
> в зависимости от создавшего его потока?


TMyClass=class
 Canvas: TCanvas:
// и т.д.
end;


DrPass   (2006-07-04 17:19:00) [68]


> Пусик ©   (04.07.06 17:17) [38]
>
> Сомневаюсь насчет любой функциональности

Игорь Шевченко в отношении вас прав на 100% :-)


Пусик   (2006-07-04 17:17:00) [69]


> Более того, я могу навернуть в него любую функциональность,
>   и он все равно будет вести себя одинаково.


Сомневаюсь насчет любой функциональности.


DrPass   (2006-07-04 17:15:00) [70]


> Пусик ©   (04.07.06 17:08) [33]
> Вопрос не о том, что для того, чтобы объект вел себя одинаково,
>  нужно затратить дополнительные усилия при его использовании,
>  а в том, что такие усилия вообще нужны.
> И совсем необязательно коверкать код, чтобы получить подобные
> эффекты

Хотите аргументов? Да пожалуйста:
type
 TMyClass = class
 end;

И какие мне нужны усилия, чтобы это объект вел себя неодинаково в зависимости от создавшего его потока? Более того, я могу навернуть в него любую функциональность,  и он все равно будет вести себя одинаково.
А вот чтобы он вел себя неодинаково... вот тут уже нужно будет действительно прилагать усилия.

> Процедуры и потоки - суть разные вещи. Не надо передергивать

Вещи разные. А вот смысл утверждений в обоих случаях совершенно одинаков.
И еще раз, плиз, см.

> Здесь не суд, поэтому выискивать "юридические лазейки" в
> определениях и правилах не стоит


Пусик   (2006-07-04 17:15:00) [71]


> Игорь Шевченко ©   (04.07.06 17:13) [35]
> Пусик ©   (04.07.06 16:43) [27] >  Вместо конкретного опровержения
> опять словоблудие.Да сдалось ты мне - опровергать тебя.
> Таблеток от хамства побольше купи, ламер.


Спасибо на добром слове, модератор.

Просьба не соваться больше в подобные ветки, так как пользы от тебя в них нет, а только попытки с высоты своего положения давить на других.


Игорь Шевченко   (2006-07-04 17:13:00) [72]

Пусик ©   (04.07.06 16:43) [27]


>  Вместо конкретного опровержения опять словоблудие.


Да сдалось ты мне - опровергать тебя. Таблеток от хамства побольше купи, ламер.


Пусик   (2006-07-04 17:10:00) [73]


> DrPass ©   (04.07.06 16:57) [32]
> > Пусик ©   (04.07.06 16:49) [29] > >DrPass ©   (04.07.06
> 16:16) [25]> Описание несколько отличается от твоего. Верно?
> И чем оно противоречит моему? Тем, что Рихтер сказал "потоки
> исполняют код и манипулируют данными"? Это допущение для
> более простого понимания. Не более того. Поток физически
> ничем не манипулирует. Манипулирует процессор, а поток описывает
> его состояние.


Хм. Как я понимаю, все зависит от процессора, а не от операционной системы?


Пусик   (2006-07-04 17:08:00) [74]


> DrPass ©   (04.07.06 16:53) [31]


Начну с последнего предложения:


> Здесь не суд, поэтому выискивать "юридические лазейки" в
> определениях и правилах не стоит.


1. В дискусси следует аргументировать свои слова по возможности как более точными высказываниями, причем желательно правдивывми.


> Хм... и как по-твоему, это какое-то отношение имеет к самим
> объектам, или все-таки является причиной сознательного коверканья
> кода программы?


Поведение объекта в разных потоках может отличаться. С этим будешь спорить?
Если нет, тогда продолжу.
Вопрос не о том, что для того, чтобы объект вел себя одинаково, нужно затратить дополнительные усилия при его использовании, а в том, что такие усилия вообще нужны.
И совсем необязательно коверкать код, чтобы получить подобные эффекты.


> Твое утверждение равноценно утверждению "использование объектов
> в процедурах на букву А отличается от использования объектов
> в процедурах на букву В"


Процедуры и потоки - суть разные вещи. Не надо передергивать.


>  Да, можно специально написать такой объект, использующий
> глобальную переменную, которой будет присваиваться разное
> значение в разных процедурах... но к общим правилам использования
> объектов это никакого отношения не имеет. Это просто "кривые
> ручки программиста".


Речь не идет о глобальных переменных, и ты это прекрасно понимаешь.
Классы могут быть разного назначения, в том числе и для взаимодействия с пользователем(к примеру), скрывающие в себе и использующие ACtiveX, Com-объекты..
И, естественно, кривые ручки программиста здесь ни при чем, так как разговор не об этом идет.


DrPass   (2006-07-04 16:57:00) [75]


> Пусик ©   (04.07.06 16:49) [29]
> >DrPass ©   (04.07.06 16:16) [25]
> Описание несколько отличается от твоего. Верно?

И чем оно противоречит моему? Тем, что Рихтер сказал "потоки исполняют код и манипулируют данными"? Это допущение для более простого понимания. Не более того. Поток физически ничем не манипулирует. Манипулирует процессор, а поток описывает его состояние.


DrPass   (2006-07-04 16:53:00) [76]


> Пусик ©   (04.07.06 16:43) [27]


> использование некоторых объектов в доп. потоке отличается
> от использования в основном потоке

Хм... и как по-твоему, это какое-то отношение имеет к самим объектам, или все-таки является причиной сознательного коверканья кода программы?
Твое утверждение равноценно утверждению "использование объектов в процедурах на букву А отличается от использования объектов в процедурах на букву В". Да, можно специально написать такой объект, использующий глобальную переменную, которой будет присваиваться разное значение в разных процедурах... но к общим правилам использования объектов это никакого отношения не имеет. Это просто "кривые ручки программиста".
Здесь не суд, поэтому выискивать "юридические лазейки" в определениях и правилах не стоит.


Пусик   (2006-07-04 16:50:00) [77]

+ "В главе 4 я говорил, что процесс фактически состоит из двух компонентов объекта ядра "процесс" и адресного пространства так вот, любой поток тожс состоит из двух компонентов.

объекта ядра, через который операционная система управляет потоком Там же хранится статистическая информация о потоке;
стека потока, который содержит параметры всех функций и локальные пере менные, необходимые потоку для выполнения кода (О том, как система управ ляет стеком потока, я расскажу в главе 16) "


Пусик   (2006-07-04 16:49:00) [78]

>DrPass ©   (04.07.06 16:16) [25]
Описание несколько отличается от твоего. Верно?


Пусик   (2006-07-04 16:48:00) [79]

>DrPass ©   (04.07.06 16:16) [25]

> А поток - это именно состояние процессора.


Не буду писать от себя, проще процитировать того же Рихтера:

"...В той же главе 4 я упомянул, что процессы инертны Процесс ничего не исполня ет, он просто служит контейнером потоков Потоки всегда создаются в контексте какого-либо процесса, и вся их жизнь проходит только в его границах На практике это означает, что потоки исполняют код и манипулируют данными в адресном про странстве процесса Поэтому, если два и более потоков выполняется в контексте од ного процесса, все они делят одно адресное пространство Потоки могут исполнять один и тот же код и манипулировать одними и теми же данными, а также совместно использовать описатели объектов ядра, поскольку таблица описателей создается нс в отдельных потоках, а в процессах..."


Пусик   (2006-07-04 16:43:00) [80]


> Это все хорошо, но каким образом это относится к сабжу ?


А все таким же. Те же самые и все о том же. Вместо конкретного опровержения опять словоблудие.

Объект есть данные и реализация обработки их.
И использование некоторых объектовв доп. потоке отличается от использования в основном потоке вследствие именно реализации обработки данных и в взаимодействия с другими объектами.

Сколько раз эту фразу повторить?


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо