Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
ВнизКак закрыть программу? Найти похожие ветки
← →
serg128 (2005-07-21 18:06) [0]Т.е. написал процедуру, в которой бесконечный цикл (ну надо так).
Создал TThread, и впихнул его туда. Всё работает хорошо, загрузка проца минимальна, но, при закрытии основного окна, программа не умирает! В обработчике OnClose написано так:
b.Terminate;
b.Resume;
b.Free;
Close;
Action := caFree;
// b- это указатель на TThread
Как закрыть программу?
← →
Fay © (2005-07-21 18:09) [1]2 serg128 (21.07.05 18:06)
Close - это что?
← →
Юрий Зотов © (2005-07-21 18:18) [2]В цикле должна быть проверка Terminated, иначе Terminate ничего не даст.
← →
serg128 (2005-07-21 18:26) [3]Проверка на terminated ничего не дала
← →
ki11er (2005-07-21 18:28) [4]...
b.Terminate;
WaitForSingleObject(b.Handle ... )
...
← →
Юрий Зотов © (2005-07-21 18:32) [5]> serg128 (21.07.05 18:26) [3]
Чудес не бывает. Код цикла - в студию, плз.
Вместо b.Free я бы использовал FreeOnTerminate - пусть уничтожает сам себя, он сам разберется.
← →
ki11er (2005-07-21 18:32) [6]сам трэд должен выглядеть примерно так:
while not Terminated do begin
...
Sleep(1)
end;
← →
Fay © (2005-07-21 18:34) [7]2 ki11er (21.07.05 18:32) [6]
Зачем Sleep и почему (1)?
← →
ki11er (2005-07-21 18:38) [8]>Зачем Sleep?
Крутые пацаны пишут трэды без слип, конечно же ;-)
>и почему (1)?
Просто для примера.
← →
Юрий Зотов © (2005-07-21 19:09) [9]> Fay © (21.07.05 18:34) [7]
> Зачем Sleep и почему (1)?
Такой вызов используется, когда скорость выполнения цикла неважна. Он передает остатот кванта времени другим потокам и при слишком быстром цикле позволяет уменьшить загрузку CPU.
Напишите такой Execute:
while not Terminated do
Sleep(1)
и сравните загрузку CPU в этом варианте и в варианте с пустым циклом, без Sleep(1).
← →
Fay © (2005-07-21 19:18) [10]2 Юрий Зотов © (21.07.05 19:09) [9]
Огромное спасибо! Правда, я и так знаю, что такое Sleep.
Меня интересовало другое - зачем он нужен в данном случае?
Я (по наивности, видимо) думал, что код пишется для того, что нужно, а не для того, что не нужно...
Шутки ради сравнил нагрузку - она не изменилась. Просто потому, что я запустил несколько разных "грузилок". 8)
← →
Fay © (2005-07-21 19:19) [11]2 Юрий Зотов © (21.07.05 19:09) [9]
> Такой вызов используется, когда скорость выполнения
> цикла неважна. Он передает остатот кванта времени
> другим потокам и при слишком быстром цикле позволяет
> уменьшить загрузку CPU.
Почему тогда не Sleep(0)?
← →
Fay © (2005-07-21 19:20) [12]2 Юрий Зотов © (21.07.05 19:09) [9]
Привет от Дениса Левшина (Эльбрус)!
← →
Юрий Зотов © (2005-07-21 19:36) [13]> Fay © (21.07.05 19:20) [12]
Опа! Неожиданно.
Привет Денису тоже! Надеюсь, все ОК?
← →
Fay © (2005-07-21 19:48) [14]2 Юрий Зотов © (21.07.05 19:36) [13]
Денис у нас не очень давно. Ему, похоже, нравится.
Очень ценный кадр!
← →
Юрий Зотов © (2005-07-21 19:52) [15]> Fay © (21.07.05 19:48) [14]
Эт-точно. Вполне согласен. Можно передать, что его система кэширования шаблонов вполне успешно живет и работает.
← →
Fay © (2005-07-21 20:03) [16]2 Юрий Зотов © (21.07.05 19:52) [15]
Да, с кешированием у него всё в порядке! 8)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.481 c