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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2009, 06:48   #1
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию Вопрос по потокам.

Если я прикручу к основному модулю своей программы дополнительный модуль, он будет выполняться в отдельном потоке или вместе с основным модулем? Т.е. нужно ли для дополнительного модуля создавать новый поток?
gusluk вне форума Ответить с цитированием
Старый 27.11.2009, 07:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

все модули (я подозреваю, что Вы имеете в виду формы, но в данном случае это неважно) выполняются в одном и том же потоке!
для того, чтобы организовать выполнение чего-либо в отдельном потоке - это нужно программировать самостоятельно (создавая поток (или потоки) и обеспечивая взаимодействие с основным потоком приложения.
Примеров, как это сделать много (в том числе и здесь, на форуме были).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.11.2009, 07:41   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Т.е. нужно ли для дополнительного модуля создавать новый поток?
А что ты хочешь то? Зачем тебе доппоток создавать для каждого модуля?
Задача полностью как звучит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 08:13   #4
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Основной модуль принимает данные с порта, второй модуль выводит эти данные в виде графика в отдельном окне (добавлен в uses). Вот и хочу чтоб вывод графика был в отдельном потоке. Но т.к. он выводится в другом окне я и подумал что это уже изначально будет свой поток.
gusluk вне форума Ответить с цитированием
Старый 27.11.2009, 08:24   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не обязательно, но можно.
Но учти тогда процедуру принятия данных дучше синхронизировать.
В отом тебе поможет TThread там есть такая возможность.
Создай его стандартными средствами делфи (File-New-thread) и почитай что там в коде будет написано.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 08:28   #6
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Значит поток все равно создавать нужно... Эт я и хотел выяснить.
Спасибо.
gusluk вне форума Ответить с цитированием
Старый 27.11.2009, 08:36   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Значит поток все равно создавать нужно.
ВНИМАТЕЛЬНО ПОЧИТАЙ МОЕ СООБЩЕНИЕ!!!
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 08:56   #8
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Все равно не понял.
Создал поток, пишут что нужно использовать Synchronize(UpdateCaption).
Но, как это в моем случае сделать, не понял.
gusluk вне форума Ответить с цитированием
Старый 27.11.2009, 09:22   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
gusluk
Ты читал вообще что я написал? - Не обязательно, но можно.

При добавлении в график некого числа вызывай Application.ProcessMessages чтоб форма не висла.
Если хочешь сделать в доппотоке то:
Прием данных идет в некую переменную, Допустим в процедуре некой.
. В потоке делай метод, в котором будешь считывать из этой переменной значение и добавлять в график, а сам этот метод в том же потоке вызывай в Synchronize.
Таким образом поток деликатно приостановится, считает переменную и отрисует график не мешая работать основному потоку.

Но тебе доппотоки совершенно не нужны. Считал значение и сразу в график его.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2009, 09:36   #10
gusluk
Форумчанин
 
Аватар для gusluk
 
Регистрация: 16.10.2008
Сообщений: 205
По умолчанию

Поток нужен.
Если я захочу изменить как то график (масштаб, интервал, и т.д.), его приходится полностью перерисовать. А это иногда десятки мегабайт данных. Пока программа его перерисовывает, на порт приходят данные и это иногда вызывает ошибки. Поэтому я и хотел чтоб отрисовка и прием данных были в разных потоках.
gusluk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
срочно нужна помощь по потокам! Voipp Общие вопросы C/C++ 0 13.09.2009 21:21
NTFS, потоки alexander707 Операционные системы общие вопросы 2 20.06.2009 20:50
Где можно найти много примеров по потокам и особенно по компоненту backgroundworker? Neymexa Общие вопросы .NET 1 16.05.2009 03:34
Вопрос по потокам Eretic Общие вопросы по Java, Java SE, Kotlin 5 02.04.2009 00:17
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10