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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2015, 08:14   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Интеллектом блеснул?
А что запрещено? Или метод тыка твоя религия не признает?
Цитата:
Я по поводу такого рода сообщений писал статейку на хабре.
Дай почитать. Може "интелект" поправлю. Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2015, 08:21   #12
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
А что запрещено?
Это было сказано с иронией. То есть по факту ты ни чем не блеснул, а дал бесполезный ответ. У новичков это называется набивание постов, и в итоге понижает уровень квалификации форума в целом. Кроме того ты сразу полез спорить, тем самым просто начав флудить не по теме. Сообщение можешь удалить сразу после прочтения, вместе со своими. Это будет правильно, и ни кто тебе слова не скажет.

Цитата:
Сообщение от kta87 Посмотреть сообщение
график в реальном времени перестраивается в зависимости от X := GetX() и заполняется, но по факту тупо имею
Боюсь что при таком подходе ничего не получится. Основную часть процессорного времени будет занимать работа компонента Chart в основном потоке приложения (внутренние расчёты компонента, перерисовка визуальной части). Поэтому вынос вычислительной части точек в отдельный поток может ничего не дать. По хорошему счёту такие задачи решаются с применением DirectX, когда все расчёты графики ложатся на видеокарту. Либо делать задержку отрисовки, чтоб рисовать не в реальном времени, а скажем в таймере с задержкой перерисовки 1 - 5 секунд. Тогда ЦП вытянет

Последний раз редактировалось Stilet; 26.01.2015 в 09:59.
WinCoder вне форума Ответить с цитированием
Старый 26.01.2015, 09:56   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Это было сказано с иронией.
Если ты меня не понял, это еще не значит что ты прав.
Цитата:
То есть по факту ты ни чем не блеснул, а дал бесполезный ответ.
Да? Странно... Ладно. Метод тыка для вас двоих не подходит. А зря.
Цитата:
и в итоге понижает уровень квалификации форума в целом. Кроме того ты сразу полез спорить, тем самым просто начав флудить не по теме. Сообщение можешь удалить сразу после прочтения, вместе со своими. Это будет правильно, и ни кто тебе слова не скажет.
А что слабо репу понизить? Или ты на своем примере решил показать что такое по настоящему бесполезный пост?
Цитата:
Основную часть процессорного времени будет занимать работа компонента Chart в основном потоке приложения
Это иммитация графика в реальном времени, так что все у ТС срастется без проблем и с таймером и с потоком. Но таймер проще будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2015, 09:58   #14
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

WinCoder, согласен с тобой вырисовывать по таймеру нужно иначе по процессору ппц, уже затестил
Как грамотнее реализовать таймер в потоке? Где создавать в потоке или за потоком?
Цитата:
Сообщение от Stilet Посмотреть сообщение
Дай почитать. Може "интелект" поправлю. Не?
Выложу статью в свободном общении (for Stilet)

Последний раз редактировалось kta87; 26.01.2015 в 10:01.
kta87 вне форума Ответить с цитированием
Старый 26.01.2015, 10:02   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
иначе по процессору ппц, уже затестил
Для потока ставь sleep(10) и никакой нагрузки не будет.
Цитата:
Как грамотнее реализовать таймер в потоке?
Таймер в потоке создавать нет смысла. Сделай все без таймера циклов в самом потоке с использованием этой самой sleep().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2015, 10:05   #16
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

С таймером потоки вообще не нужны. Одно ядро ЦПУ прекрасно со всем справится. Но если есть желание делать именно в потоке (например чтоб показать умение его использовать), то я бы перенёс таймер туда. Оптимизации это не даст, так как таймер и так реализован в потоке, но это разгрузит основной код главного юнита приложения.
WinCoder вне форума Ответить с цитированием
Старый 26.01.2015, 10:40   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Выложу статью в свободном общении (for Stilet)
Жду с нетерпением )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2015, 11:41   #18
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Как грамотнее реализовать таймер в потоке? Где создавать в потоке или за потоком?
И зачем он там?

У тебя задача:
Нагененрировать 200 кило демо-данных и красиво вывести их на график.

Проблема:
Процесс генерации вешает процесс.

Запуск в потоке ничего ровным счетом не даст, вычисления производит другое ядро ЦП, однако вызов синхронизации так же подвесит осн. поток, т.к. выполняется после каждого вычисления.

Как вариант:
Отложено отображать данные, пока те генерируются другим потоком.

В потоке генерируешь данные, куда-то за пределы потока, скажем в очередь TQueue.

На форме делаешь таймер, на 200-300 мс, в котором обращаешься к очереди и удаляешь(используешь в чарте) оттуда элементы, и ProcessMessages чтоб совсем убрать подвисания, если такие вообще будут.

Весь процесс:
- пнул кнопку
- Запустился поток, уведомил форму о начале генерации данных, запустился таймер.
- таймер работает(берет видимый период точек чарта(- 50 точек) и завершает цикл) чтоб реализовать движение графика.
- Поток закончил, уведомил что таймеру надо бы прекратить работать.
- Таймер работает пока есть данные, а затем, если надо бы завершить работу, отключается.

как-то так, должно без проблем заработать.

Последний раз редактировалось Человек_Борща; 26.01.2015 в 11:44.
Человек_Борща вне форума Ответить с цитированием
Старый 26.01.2015, 11:52   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кстати... Вспомнилось как нас в ВУЗе учил препод, которому легенды впору слагать. Он дал нам эмулятор камушка, его подключали к программе и в программе получали данные как будто из настоящего устройства. Я вот не помню что за эмуль был, кажись от AVR Studio какой-то плуг, но сам смысл в том что эмулировался СОМ порт, м которого студни на стенде снимали инфу. И наглядно и удобно. Не надо заморачивать студентов всякими потоками генерации данных.
Потом мне это пригодилось, когда с ОРС серверами работал. Тестировал свою программу для станка с ЧПУ. Так что рекомендую сей путь джедая. Не исключено что потом бывшие студенты столкнутся с чем-то подобным например на базе Синумерика.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2015, 20:18   #20
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не надо заморачивать студентов всякими потоками генерации данных.
Да никогда в жизни! Мои студни и понятия не имеют о том что такое потоки, и даже lazarus Это лабы по теории автомобиля. "Внешняя скоростная характеристика ДВС", по методике Лейдермана эмитируется работа самого двс.
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет набранных символов в реальном времени. Zerdone Microsoft Office Word 1 04.10.2013 01:11
сложение ячеек в реальном времени Nenado БД в Delphi 4 03.02.2012 10:16
Обработка в реальном времени aferistz PHP 3 25.10.2011 18:03
Возврат значений из DLL в реальном времени Alter Общие вопросы Delphi 5 21.06.2011 19:43