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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 04:31   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Что вызывется после Execute у потока?

Я склоняюсь к Destroy. Я прав?
TwiX вне форума Ответить с цитированием
Старый 04.05.2010, 04:41   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

По крайней мере он точно вызывается по завершении Execute.
Баламут вне форума Ответить с цитированием
Старый 04.05.2010, 11:44   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Project - options - compiler - use debug DCUs
Бряк на вызов Execute - F9 - F7, F7, F7...
пыщь
JTG вне форума Ответить с цитированием
Старый 04.05.2010, 20:24   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

JTG, хоть что-то я умею) Так пробовал перед созданием темы. Никуда дальше не переходит.
TwiX вне форума Ответить с цитированием
Старый 04.05.2010, 20:49   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
Я склоняюсь к Destroy. Я прав?
Зависит от некоторых обстоятельств.
1. FreeOnTerminate установлен в True
2. Тело обработчика Execute пустое

И то "сразу" это для человека - да, для системы - нет. Вопрос странный немного )
BOBAH13 вне форума Ответить с цитированием
Старый 04.05.2010, 21:35   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

TwiX, ещё как переходит А именно в finally Classes.ThreadProc
Код:
function ThreadProc(Thread: TThread): Integer;
var
  FreeThread: Boolean;
begin
{$IFDEF LINUX}
  if Thread.FSuspended then sem_wait(Thread.FCreateSuspendedSem);
{$ENDIF}
  try
    if not Thread.Terminated then
    try
      Thread.Execute;
    except
      Thread.FFatalException := AcquireExceptionObject;
    end;
  finally
    FreeThread := Thread.FFreeOnTerminate; 
    Result := Thread.FReturnValue;
    Thread.DoTerminate;
    Thread.FFinished := True;
    SignalSyncEvent;
    if FreeThread then Thread.Free;
{$IFDEF MSWINDOWS}
    EndThread(Result);
{$ENDIF}
{$IFDEF LINUX}
    // Directly call pthread_exit since EndThread will detach the thread causing
    // the pthread_join in TThread.WaitFor to fail.  Also, make sure the EndThreadProc
    // is called just like EndThread would do. EndThreadProc should not return
    // and call pthread_exit itself.
    if Assigned(EndThreadProc) then
      EndThreadProc(Result);
    pthread_exit(Pointer(Result));
{$ENDIF}
  end;
end;
пыщь
JTG вне форума Ответить с цитированием
Старый 06.05.2010, 02:03   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

JTG, у меня такого нет:
Код:
Project - options - compiler - use debug DCUs
TwiX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что в ссылке на объект, после объявления? AnTe Общие вопросы Delphi 7 26.03.2010 04:30
Что происходит с потоком после выполнения процедуры Execute? TwiX Общие вопросы Delphi 7 13.12.2009 12:33
Можно ли вызвать функцию потока, которая не стоит в Execute? TwiX Общие вопросы Delphi 4 12.12.2009 22:29
Что означает override, идущий после функции? TwiX Общие вопросы Delphi 22 09.08.2009 18:31
Использование метода free после завершения потока Denager Общие вопросы Delphi 4 29.08.2008 10:13