![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
Здравствуйте мастера Delphi!!! Есть процедура GlobalRaschet. Она долго выполняется, если ее вызвать (там работа с массивами). Если процедура вызывается с потоком формы, то она выполнится за 5 минут, но вот если процедуру вызвать в новом потоке, то выполнится она намного медленнее, даже примерно за 15-20 минут! Вопрос такой: с чем это может быть связано и как это устранить? Т.е. мне необходимо, наверное, увеличить приоритет этого потока или еще что-нибудь. И вообще правильно я создал поток? Уважаемые мастера Delphi помогите мне пожалуйста разобраться в чем дело. Спасибо заранее!
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| zalex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 13.5.2005 Репутация: 2 Всего: 2 |
Вообще конечно интересно почему так медленнит :), но попробуй приоритет потоку накрутить. А по приведенному коду всё правильно.
|
|||
|
||||
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
А как приоритет выше поставить?
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Надеюсь в GlobalRaschet нет обращений к VCL. И тем более там не должно быть Application.ProcessMessage.
А вообще, запуск потока делашь правильно, но здесь трудно ошибиться -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
MyPotok.Priority:=...
tpIdle The thread executes only when the system is idle. The system will not interrupt other threads to execute a thread with tpIdle priority. tpLowest The thread's priority is two points below normal. tpLower The thread's priority is one point below normal. tpNormal The thread has normal priority. tpHigher The thread's priority is one point above normal. tpHighest The thread's priority is two points above normal. tpTimeCritical The thread gets highest priority. |
|||
|
||||
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
Надеюсь в GlobalRaschet нет обращений к VCL... А что это значит?
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| Dynamic |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Типа,
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||
|
|||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Простите за тупой вопрос ...
А где в приведенном выше коде поток ЗАПУСКАЕТСЯ. Как создаётся вижу ..... А где от запускается ???
А для этого нужно использовать synchronyze (может опшибся в написании), насколько мне помниться ... Это сообщение отредактировал(а) Marriage - 29.5.2005, 20:31 -------------------- Praemonitus, praemunitus |
|||
|
||||
| Dynamic |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||||
|
|||||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Dynamic
Спасибо -------------------- Praemonitus, praemunitus |
|||
|
||||
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
А подскажите тогда, как остановить этот поток, т.е. поток запушен и производятся расчеты в процедуре, как в этом случае остановить поток?
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Thread.Suspend
|
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Suspend приостанавливает поток, а не останавливает его. Т.е. поток конечно останавливается, но не удаляется из системы, а готов в любой момент продолжить выполнение. Естественно, его ресурсы при этом не освобождаются. А вообще, всем очень рекомендую почитать замечательную статью о потоках: http://mbo88.narod.ru/ToC.html -------------------- Все знать невозможно, но хочется |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Мне показалось, что именно это и нужно За ссылку -+- спасибо! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |