Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток! Прошу помощи в следующем вопросе. Объект класса назовем его "ccm" имеет функцию получения данных. В TTimer "Time" идет обращение к функции считывания Код: plaintext 1. и последующая обработка полученных результатов 1. Показать данные в виде графиков 2. записать данные в файл. 3. посчитать на основании данных что-то 4. показать это что-то опять на графиках. и все бы ничего но показ графиков "TChart" реально тормозит запись и подвешивает всю работу расчетов. Была слабая попытка использовать TTask но отсутствие знаний опыта в этом вопросе "и хреновая звездограмма :)" не дают желаемого результата. Код попытки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Теперь о наболевшем! - если таск успевает показать графики до оканчания работы таймера Sleep ( скажем 1000) то вcё ок. - если нет, Sleep скажем 8000, то создается новый таск в заново стартонувшем таймере снова и снова пока не подвешивает прогу. Как быть и что делать ? с ув Виктор ! П.С. пытался определить в разных местах статуци типа Код: plaintext 1. но при "Sleep ( mnogo dannich 8000)" не помогает. Таймер перестартовывает раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 16:28 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik, Ну я, честно говоря, ничего не понял. Понятно, что нужно правильно распараллелить расчёт и показ графиков, но как это делать -- зависит от задачи, я лично из твоих объяснений не понял пока ничего собственно о задаче. Если какие-то мифические TTask-и тебе непонятны, попробуй воспользоваться стандартными <future> из С++ (11). Они достаточно просты для понимания и не требуют никаких классов и иерархий. Если их сопрячь с лямбдами, будет ещё проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 12:26 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Да, и таймеры для многозадачного программирования не применяются. Забудь про них пока не поймёшь , зачем они. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 12:27 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Видимо первое обьяснение было сумбурным. В виду необходимости решения этой задачи я создал топик в делфях. мне там ответили но не помогло. я могу сделать копию обьяснения могу скинуть ссылку а могу есче раз обьяснить попробовать.Как правильней? на всякий случай ссылка. http://www.sql.ru/forum/1261481/parallel-programming-library-ttask-timer надеюсь на помощь.:) с ув Виктор ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 12:33 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Да, и таймеры для многозадачного программирования не применяются. Забудь про них пока не поймёшь , зачем они. ну не я это начинал мне этот г...р от коллеги достался. Жесткая задача. Не меняй а усовершенствуй. Работает таймер . читает пишет показывает. Задача разделить процессы внутри таймера чтоб рисовалка диаграмм работала сама по себе и не тормозила запись данных. Отрисовка работает себе по тихоньку пока не закончит не обращая внимания на работу таймера. Но по завершении рисования опять в таймере получает новую порцию данных для рисования. вопро стоит нового рисования пока не закончилось старое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 12:42 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
1. Запускаем отдельную нитку Б подготовки данных. - в главном потоке на форме рисуем Waiting или песочные часы на предыдущем графике 2. По завершению Б выставляем флаг/condition var что то вроде http://en.cppreference.com/w/cpp/thread/notify_all_at_thread_exit -в главном потоке отдаем графику новые данные Вариант - если обновление регулярное - то Б не завершаем, а через флаг готовности / мутекс _копируем_ готовую пачку данных основному потоку Ну и конечно, желательно учесть масштаб/разрешение графика, чтобы количество точек не было больше, чем в принципе можно отобразить на экране ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 12:51 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikMasterZiv, Да, и таймеры для многозадачного программирования не применяются. Забудь про них пока не поймёшь , зачем они. ну не я это начинал мне этот г...р от коллеги достался. Жесткая задача. Не меняй а усовершенствуй. Работает таймер . читает пишет показывает. Задача разделить процессы внутри таймера чтоб рисовалка диаграмм работала сама по себе и не тормозила запись данных. Отрисовка работает себе по тихоньку пока не закончит не обращая внимания на работу таймера. Но по завершении рисования опять в таймере получает новую порцию данных для рисования. вопро стоит нового рисования пока не закончилось старое. Оберни код мутексом и при запуске проверяй: если занят, то значит еще работает предыдущий запуск и ничего делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:00 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Siemargl, дак а я за что? Я ТОЛЬКО ЗА. только нету у таска мьютекса.или я не нашел:) Вот набросал схемку. Да. работа таймера непрерывна. а показывать и без песочных часов можно. Получил. Показал. Как мне в таске впихнуть этот флаг готовности ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:04 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, Дима как? код вверху где что записать ? есть класс передаю данные через конструктор в таймере при создании обьекта. все. мне нужно только проверку окончания таска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:08 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikтолько нету у таска мьютекса.или я не нашел:) Мутекс сам по себе. Хоть WinAPI используй. Глобальную переменную объяви в конце-концов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:09 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, так я и создал флаг пока что как лэйбл чтоб было видно. потом сделаю просто bool переменную. все работает только как то не спокойно за синхронизацию изменения состояния флага. код я в форуме делфи выложил. ссылка выше. не хочу мусорить в форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:17 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, Дима как? код вверху где что записать ? есть класс передаю данные через конструктор в таймере при создании обьекта. все. мне нужно только проверку окончания таска. Если правильно понял твою схему на картинке, то так надо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. PS Если std::mutex будешь использовать, то для него есть std::unique_lock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:20 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik, другими словами как главному тайму(программе) узнать что таск закончил работу чтобы запустить таск заново. Естественно автоматически и внутри таймера с передачей данных через коструктор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:22 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, немножечко не так. при работе таймера я создаю обьект таска. и пока он не закончит работу. я не создаю новый таск. Вопрос как узнать окончание работы таска? если таймер не узнает что таск есче работает он создает новый таск пока не заполнит память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:27 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, немножечко не так. при работе таймера я создаю обьект таска. и пока он не закончит работу. я не создаю новый таск. Вопрос как узнать окончание работы таска? если таймер не узнает что таск есче работает он создает новый таск пока не заполнит память. Он не создаст новый таск пока старый не отработает. Ты мутексами пользовался когда-нибудь? Если один поток захватил мутекс (mtx.lock()) то второй поток повиснет на mtx.lock() до тех пор пока первый не вызовет mtx.unlock() т.е. пока первый таск работает - твой код будет висеть пока таск не отработает Если висеть не надо, то можно проверить блокировку Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:34 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Я так понимаю "Parallel Programming Library" это дельфийный С++. Если так то лучше в дельфи спросить как этими тасками пользоваться, т.к. это не С++, а самостоятельная либа, которую в С++ мало кто использует. Вот нагуглил : авторTTask – это класс, который позволяет запускать одну задачу или несколько задач параллельно. При этом вам не придётся создавать поток и управлять им. Класс TTask реализует интерфейс ITask. В интерфейсе ITask в вашем распоряжении есть функции для запуска (Start), ожидания (Wait) и отмены (Cancel) задачи и статус (Status), позволяющий узнать, что происходит с задачей. Вот возможные статусы задачи: Created (задача создана), WaitingToRun (задача ожидает окончания выполнения другого процесса), Running (задача выполняется), Completed (задача завершена), WaitingForChildren (задача ожидает окончания выполнения дочерней задачи), Canceled (задача была отменена), Exception (при выполнении задачи произошла ошибка). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:42 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, мютексами не пользовался думаю ничего военного. останавливать и ждать нельзя. просто таймер молотит свою работу и по освобождению таска выдает ему новое задание. все. Я немогу узнать окончание работы таска! не надо никого блокировать. все работает без ожиданий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:46 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, проблемма в том что инфы оч мало. в делфях тоже все подвисают никакой конкретики. общие фразы. то что ты.вы. нашли(шел) я не знаю как правильней:) я уже давно как сон вижу. в эмбаркадеро три кастрированных примерчика которые на примитивном уровне обьясняют . А дальше сам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:51 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik, вот я и мыкаюсь в поисках спецов конкретики а получаю обобщенные советы подумать на тему а не использовать ли опен джиэль в тчарте. Я без претензий:) мне бы хелп получить. с ув Виктор ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 13:54 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, проблемма в том что инфы оч мало. в делфях тоже все подвисают никакой конкретики. общие фразы. то что ты.вы. нашли(шел) я не знаю как правильней:) я уже давно как сон вижу. в эмбаркадеро три кастрированных примерчика которые на примитивном уровне обьясняют . А дальше сам... Документация на это поделие (TTask, Timer) есть в инете хоть какая-нибудь? Если есть - давай ссылки. Распараллеливание - это достаточно сложная тема с кучей граблей. По-хорошему надо начинать с этой книги Джеффри Рихтер Создание эффективных Win32-приложений PS Правильно "ты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 14:11 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, мютексами не пользовался думаю ничего военного. останавливать и ждать нельзя. просто таймер молотит свою работу и по освобождению таска выдает ему новое задание. все. Я немогу узнать окончание работы таска! не надо никого блокировать. все работает без ожиданий. Если останавливать нельзя, то таск должен как-то оповестить что он закончил. Не надо проверок таска, он должен инициировать дальнейшую работу. Как вариант: запускать таймер таском, т.е. при срабатывании таймера останавливаешь таймер, подготавливаешь таск, запускаешь, в конце работы таска высчитываешь сколько времени осталось до следующей сработки, ставишь на это время таймер, запускаешь таймер и так по кругу. Можно проще: вместо таймера просто собственное виндовое сообщение, по которому происходит подготовка исходных данных, а в таске в конце Sleep() на время до следующей сработки и отправка сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 14:31 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, Распараллеливание - это достаточно сложная тема с кучей граблей. По-хорошему надо начинать с этой книги Джеффри Рихтер Создание эффективных Win32-приложений только там о тасках нет ничего.:( настольная книга в пдэфе. таймер не останавливается!!!!! Я могу облокотится на время работы таска. Но таймер должен работать без остановов локов ожиданий итд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 15:27 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, ссыло? да пожалуйста. http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_TTask_from_the_Parallel_Programming_Library http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Tutorial:_Using_Tasks_from_the_Parallel_Programming_Library http://docwiki.embarcadero.com/RADStudio/Berlin/en/Tutorial:_Using_the_For_Loop_from_the_Parallel_Programming_Library http://docwiki.embarcadero.com/CodeExamples/XE7/en/TMutexAcquire_(C ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 15:35 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikтолько там о тасках нет ничего.:( Там об устройстве виндовса и WinAPI, на котором таски и таймеры работают. И о подводных камнях многопоточных приложений. Похожим образом устроены таски в C#, можешь про них почитать у того же Рихтера Глава 27. асинхронные вычислительные операции komvikНо таймер должен работать без остановов локов ожиданий итд. Мой пост выше читал 20523566 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 15:45 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, Как вариант: запускать таймер таском, т.е. при срабатывании таймера останавливаешь таймер, подготавливаешь таск, запускаешь, в конце работы таска высчитываешь сколько времени осталось до следующей сработки, ставишь на это время таймер, запускаешь таймер и так по кругу. таск создается в РАБОТАЮЩЕМ БЕЗ ОСТАНОВКИ таймере И живет своееей жизнью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 15:56 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, так я и создал флаг пока что как лэйбл чтоб было видно. потом сделаю просто bool переменную. все работает только как то не спокойно за синхронизацию изменения состояния флага. код я в форуме делфи выложил. ссылка выше. не хочу мусорить в форуме.Т.е. проблему ты решил, а вопрос только с синхронизацией доступа к bool/TLabel из разных потоков? Ты главу 8 "Джеффри Рихтер Создание эффективных Win32-приложений" внимательно читал? Еще тут посмотри http://www.cplusplus.com/reference/atomic/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:01 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
m_Sla, нет не внимательно. т.е если я обьявлю флаг атомик то могу избежать последовательных ошибок? не дошло:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:06 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik П.С. пытался определить в разных местах статуци типа Код: plaintext 1. но при "Sleep ( mnogo dannich 8000)" не помогает. Таймер перестартовывает раньше. Это не помогает т.к. таски разные проверял, т.е. ты сначала таск создал и сразу проверяешь, естественно он еще не закончил. Надо task сделать свойством класса TFormMain, а не локальной переменной. Т.е. примерно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:07 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik, можно поподробнее если не сложно.пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:08 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikm_Sla, нет не внимательно. т.е если я обьявлю флаг атомик то могу избежать последовательных ошибок? не дошло:(попробуй внимательно прочитать) это будет быстрее, чем ждать, что кто-то за тебя программу напишет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:10 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, О. наконец то. алилуя . щас попробую отпишусь хотя у меня таск создан в привате хеадера. Но не инициализирован в мэйне. бегу пробовать. мэнисенкс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:12 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
m_Sla, да дело не в почитай елыпалы. мужуҡи я не лентяй я в непонятке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:14 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, Как вариант: запускать таймер таском, т.е. при срабатывании таймера останавливаешь таймер, подготавливаешь таск, запускаешь, в конце работы таска высчитываешь сколько времени осталось до следующей сработки, ставишь на это время таймер, запускаешь таймер и так по кругу. таск создается в РАБОТАЮЩЕМ БЕЗ ОСТАНОВКИ таймере И живет своееей жизнью. Ничего нельзя но очень надо! Так не бывает. Сначала определись с ТЗ. Например таймер срабатывает раз в секунду ВремяТаймерТаск00:01.00Запустился00:01.01Запустился00:01.55Завершился00:02.00Запустился00:02.01Запустился00:03.00Запустился00:03.15Завершился Как программа должна отработать в 00:03.00 когда запустился таймер, но таск еще работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:18 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, Это. Ты. Гэниально. Все работает. Даже не знаю как и спасибочки выразить. сто плюсов тебе в карму.Чем могу отблагодарить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:23 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik, Дима таймер работает 50милисек ттаск я подвешиваю слипом на 40сек. и все фунциклюет. жму руку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:27 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, Это. Ты. Гэниально. Все работает. Даже не знаю как и спасибочки выразить. сто плюсов тебе в карму.Чем могу отблагодарить? Рихтера прочитай внимательно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 16:36 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, да уж и так читаю читаю така зеленая как купорос...( надеюсь цитата уместна.:)) есче раз спасибо. если честно не надеялся на помощь. и ведь решение на поверхности. а вот те нате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 17:03 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Да уж, ну и рассказик получился. Мы тут советуем какой молоток лучше использовать, а он просто не знал куда гвоздик забить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 18:02 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Да уж, ну и рассказик получился. Мы тут советуем какой молоток лучше использовать, а он просто не знал куда гвоздик забить ага типа мы пахали. еслиб не дима...... вас пардон я в рассказе не припоминаю. звиняйте еси шо не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 18:51 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikага типа мы пахали. еслиб не дима...... вас пардон я в рассказе не припоминаю. звиняйте еси шо не так. ну ты же ветку не только здесь открыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 19:05 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikага типа мы пахали. еслиб не дима...... Руслан все правильно написал. Пахать тут нечего, играли в угадайку. Телепатов тут нет, мой хрустальный шар случайно оказался более правильным. Я до кучи написал тот пост и ... угадал. Случайно! Но тот пост не соответствует тому что надо было получить, т.е. твоему ТЗ, тому что ты выше писал и рисовал. Учись правильно вопросы формулировать. Не зря говорят: "Правильно заданный вопрос содержит половину ответа". PS Совет: если еще будешь спрашивать про свой Delphi C++, то сразу давай ссылки на документацию по используемым объектам, т.к. эту экзотику тут мало кто знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 19:51 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikтаск создается в РАБОТАЮЩЕМ БЕЗ ОСТАНОВКИ таймере И живет своееей жизньюобъяснил как бог! таймер работает 50милисек ттаск я подвешиваю слипом на 40сек. и все фунциклюета теперь давай 40+random(20)сек Код: plaintext 1. и, наверное, в этом показе присутствует 'Synchronize' ? ( конечно же - так в книжках пишут! ) А потом туда захочется воткнуть и 'ProcessMessages'. ( ну, чтоб формочку за уши потягать, когда показ ) И вот тогда, работающий без остановки таймер , укусит себя за хвост. ( создается новый таск в заново стартонувшем сообщении от таймера снова и снова пока не подвешивает прогу.) Поздравляю, за что боролись - на то и напоролись )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 00:26 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Bred eFeM, Да ладно.не пинайте. можно подумать все вы с пеленок код писать начали. Все замечания приняты. в следующий раз буду соответствовать . Я же суда не потрындеть пришел а за помощью. Помогли . Огромное спасибо. Лучше бы подсказали как правильней . С учетом (не моих) жестких требований. Да, если человек не понимает, если читает и не понимает, то не надо сразу .... Были бы нароботки было бы легче. Есть нюансы таймера. ? Напиши. Не суй пальцы в розетку. а не ждать пока тыкнет а потом посмеиваться . я ж типа говорил, вот жеж неуч. А. по поводу "без остановки". таймер иногда прерывают для изменения входных данных. И есче. Я бы с удовольствием весь код показал, но за это меня мое начальство отлюбит. неразрешено. вот и пыхчу. P.S. все равно. Спсбо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 10:02 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Отдельное сори. Я с Делфи на с++ прыгал не понял кто где писал. Стрес. итд. в общем извини за непонятку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 10:06 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, Дима что значит Т3? у меня один таймер. Dima TКак программа должна отработать в 00:03.00 когда запустился таймер, но таск еще работает? таймер игнорирует таск и продолжает работу. пока таск не покажет что он закончил. Я может не все понимаю. это решение,которое ты написал. Оно правильное? или грабли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 10:13 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvik, не дописал... . И передаст в таск данные при следующем старте таймера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 10:16 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, Дима что значит Т3? у меня один таймер. Техническое Задание, т.е. что конкретно должно получиться в итоге. komvikЯ может не все понимаю. это решение,которое ты написал. Оно правильное? или грабли? Если результат тебя устроил, то получается что правильное. Оно работоспособное, т.е. не сглючит. А как правильно - это определяет ТЗ. Т.е. тебе виднее правильно или нет. Я тебе выше тоже самое с мутексом предлагал 20523255 , но ты не прореагировал, вот и пойми после этого что ты хочешь. В общем если устраивает - оставь как есть. Жить будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 10:39 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Dima T, Почитал есче раз про мьютекс . не совсем понятно как при первом обращении его применить . если бы пример на моем коде было бы нагляднее. код живет. правда вчера в конце работы че то глюкнуло. когда я в таск начал из буфера данные вытаскивать. но это я думаю не связанно с решением которое ты предложил. class TFormMain { _di_ITask task = NULL; ... } это было то что нужно в самом начале создания таска. task->Status == TTaskStatus::Completed) а это в процессе работы. Dima TЯ тебе выше тоже самое с мутексом предлагал 20523255 , но ты не прореагировал, не не прореагировал . ты писал что идет останов. Dima TЕсли один поток захватил мутекс (mtx.lock()) то второй поток повиснет на mtx.lock() до тех пор пока первый не вызовет mtx.unlock() эта фраза меня и смутила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 11:02 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikDima T, Почитал есче раз про мьютекс . не совсем понятно как при первом обращении его применить . если бы пример на моем коде было бы нагляднее. Рихтера читай. Там с примерами и объяснениями. Глава 8. Синхронизация потоков в пользовательском режиме Глава 9. Синхронизация потоков с использованием объектов ядра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 11:52 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
komvikЛучше бы подсказали как правильней 20521699 (если интересно могу разжевать) С учетом (не моих) жестких требований.Каких требований, vcl-ttimer и ttask? Ну, держись за них, руководство любит послушных. если человек не понимаетесли программист не понимает - делает пример и изучает. http://forum.vingrad.ru/forum/topic-60076/view-all.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 13:51 |
|
||
|
Parallel Programming Library TTask+Timer (c++)
|
|||
|---|---|---|---|
|
#18+
Bred eFeM, Не моих, значит вышестоящие писатели проги , требующие оптимизации без изменений. разжевывать нет необходимости. понятно. за ссылку спасибо почитаю. не хватает (читается нет ) профзнаний правильного распределения потоков с учетом использования одних и тех же ресурсов. потоки(не мной)решено было не использовать. а использовать таски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 16:39 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018161]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 308ms |
| total: | 599ms |

| 0 / 0 |
