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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2011, 14:08   #1
derElektroBesen
Пользователь
 
Регистрация: 17.07.2011
Сообщений: 24
По умолчанию Работа с потоками

Сейчас пишу одну интересную программку с использованием потоков. Их я использую впервые и следовательно возникают вопросы.
Пусть был создан класс:
Код:
type
TDemo = class (TThread)
protected 
  procedure Execute; override;
  {еще ряд процедурок}
public
  procedure NewProcedure;
  {И еще ряд процедурок}
end;
В процедуре Execute у меня код отсутствует. Из другого модуля у меня вызываются процедуры данного класса. Предположим NewProcedure;
Внимание, вопрос:
Будет ли создан новый поток даже если процедура Execute ничего не делает, но при этом выполняются некоторые процедуры данного класса?..
derElektroBesen вне форума Ответить с цитированием
Старый 17.07.2011, 14:28   #2
derElektroBesen
Пользователь
 
Регистрация: 17.07.2011
Сообщений: 24
По умолчанию

Я понял... Нет, не будет.
Вопрос снят)
derElektroBesen вне форума Ответить с цитированием
Старый 17.07.2011, 14:31   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> В процедуре Execute у меня код отсутствует

значит, ваш поток завершит свою работу практически сразу же. А если FreeOnTerminate = True, то и освободит экземпляр по выходу из потока.

> Будет ли создан новый поток даже если процедура Execute ничего не делает, но при этом выполняются некоторые процедуры данного класса?..

поток будет создан в том случае, если парамет CreateSuspended в конструкторе был равен False, или был вызван метод Resume(), или Suspended был установлен в False.

При этом, если вы вызываете метод NewProcedure() или любой другой, он будет выполняться в контексте вызывающего потока, вне зависимости от того, есть что-то в Execute() или нет!

Только то, что явно вызывается из перекрытого Execute(), будет работать в контексте созданного потока.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.07.2011, 14:33   #4
derElektroBesen
Пользователь
 
Регистрация: 17.07.2011
Сообщений: 24
По умолчанию

Спасибо =)
Цитата:
Сообщение от veniside Посмотреть сообщение
При этом, если вы вызываете метод NewProcedure() или любой другой, он будет выполняться в контексте вызывающего потока, вне зависимости от того, есть что-то в Execute() или нет!.
Именно это до меня добежало чуть ранее
derElektroBesen вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с потоками gagarin0 Win Api 4 05.11.2010 02:30
Работа с потоками Яр|/||< (^_^) Общие вопросы Delphi 5 09.03.2010 08:23
Работа с потоками den49 Помощь студентам 0 06.10.2009 14:52
работа с потоками Alex_Pro Общие вопросы .NET 1 01.07.2008 07:25
C++, работа с потоками mat90x Помощь студентам 20 15.05.2008 22:20