powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Parallel Programming Library TTask+Timer (c++)
52 сообщений из 52, показаны все 3 страниц
Parallel Programming Library TTask+Timer (c++)
    #39461701
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток!

Прошу помощи в следующем вопросе.

Объект класса назовем его "ccm" имеет функцию получения данных.

В TTimer "Time" идет обращение к функции считывания

Код: plaintext
1.
ccm->GetResult((TBufferCast *)&Result)



и последующая обработка полученных результатов
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.
//////////////////////////////////////////////////////////////////////////////////////
 class TCppTask : public TCppInterfacedObject<TProc>
  {
  public:
  TBuffer CCMResult;

  int ii;  

  TCppTask(TBuffer CCMResult )
  {
	ii = CCMResult.Rpm ;
  }
  void __fastcall Invoke()
	{
		String s=  IntToStr(ii);
		FormMain->Label_RPM->Caption =  s ;	
               Sleep(1000);
       //  vmesto sleep podstavljaem mnogestvo parametrov neobhodimich dlja pokaza
	// parametrov och mnogo odin iz nich 7000 tochek na TChart.
	}
};
//////////////////////////////////////////////////////////////////////////////////////////
 TFormMain::TimerRequestTimer(TObject *Sender)
    if (ccm->GetResult((TBufferCast *)&Result)>0)
	{
           ...zapis dannich 
         _di_ITask task = TTask::Create(_di_TProc(new TCppTask(Result))); 
           task->Start();//zdes po idee idet pokaz v otdelnom taske
         
           ... rascheti dannich     

   if (Reactivate) { TimerRequest->Enabled = true;..//timer krutitsja poka ne ostanovjat 
          }

////////////////////////////////////////////////////////////////////////////////////////



Теперь о наболевшем!
- если таск успевает показать графики до оканчания работы таймера Sleep ( скажем 1000) то вcё ок.
- если нет, Sleep скажем 8000, то создается новый таск в заново стартонувшем таймере снова и снова пока не подвешивает прогу.

Как быть и что делать ?
с ув Виктор !
П.С. пытался определить в разных местах статуци типа

Код: plaintext
1.
if (task->Status == TTaskStatus::Completed) 



но при "Sleep ( mnogo dannich 8000)" не помогает. Таймер перестартовывает раньше.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462168
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

Ну я, честно говоря, ничего не понял.
Понятно, что нужно правильно распараллелить расчёт и показ графиков, но как это делать -- зависит от задачи,
я лично из твоих объяснений не понял пока ничего собственно о задаче.

Если какие-то мифические TTask-и тебе непонятны, попробуй воспользоваться стандартными <future> из С++ (11).
Они достаточно просты для понимания и не требуют никаких классов и иерархий. Если их сопрячь с лямбдами,
будет ещё проще.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462171
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и таймеры для многозадачного программирования не применяются. Забудь про них пока не поймёшь , зачем они.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462181
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Видимо первое обьяснение было сумбурным. В виду необходимости решения этой задачи я создал топик в делфях. мне там ответили но не помогло. я могу сделать копию обьяснения могу скинуть ссылку а могу есче раз обьяснить попробовать.Как правильней?
на всякий случай ссылка.
http://www.sql.ru/forum/1261481/parallel-programming-library-ttask-timer
надеюсь на помощь.:)
с ув Виктор !
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462203
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Да, и таймеры для многозадачного программирования не применяются. Забудь про них пока не поймёшь , зачем они.

ну не я это начинал мне этот г...р от коллеги достался. Жесткая задача. Не меняй а усовершенствуй.
Работает таймер . читает пишет показывает. Задача разделить процессы внутри таймера чтоб рисовалка диаграмм работала сама по себе и не тормозила запись данных. Отрисовка работает себе по тихоньку пока не закончит не обращая внимания на работу таймера. Но по завершении рисования опять в таймере получает новую порцию данных для рисования. вопро стоит нового рисования пока не закончилось старое.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462216
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Запускаем отдельную нитку Б подготовки данных.
- в главном потоке на форме рисуем Waiting или песочные часы на предыдущем графике

2. По завершению Б выставляем флаг/condition var
что то вроде http://en.cppreference.com/w/cpp/thread/notify_all_at_thread_exit
-в главном потоке отдаем графику новые данные

Вариант - если обновление регулярное - то Б не завершаем, а через флаг готовности / мутекс _копируем_ готовую пачку данных основному потоку

Ну и конечно, желательно учесть масштаб/разрешение графика, чтобы количество точек не было больше, чем в принципе можно отобразить на экране
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462229
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikMasterZiv,

Да, и таймеры для многозадачного программирования не применяются. Забудь про них пока не поймёшь , зачем они.

ну не я это начинал мне этот г...р от коллеги достался. Жесткая задача. Не меняй а усовершенствуй.
Работает таймер . читает пишет показывает. Задача разделить процессы внутри таймера чтоб рисовалка диаграмм работала сама по себе и не тормозила запись данных. Отрисовка работает себе по тихоньку пока не закончит не обращая внимания на работу таймера. Но по завершении рисования опять в таймере получает новую порцию данных для рисования. вопро стоит нового рисования пока не закончилось старое.
Оберни код мутексом и при запуске проверяй: если занят, то значит еще работает предыдущий запуск и ничего делать не надо.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462237
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,
дак а я за что? Я ТОЛЬКО ЗА. только нету у таска мьютекса.или я не нашел:)
Вот набросал схемку. Да. работа таймера непрерывна. а показывать и без песочных часов можно. Получил. Показал.
Как мне в таске впихнуть этот флаг готовности ?
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462245
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Дима как? код вверху где что записать ?

есть класс передаю данные через конструктор в таймере при создании обьекта. все. мне нужно только проверку окончания таска.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462247
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikтолько нету у таска мьютекса.или я не нашел:)
Мутекс сам по себе. Хоть WinAPI используй.
Глобальную переменную объяви в конце-концов.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462257
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

так я и создал флаг пока что как лэйбл чтоб было видно. потом сделаю просто bool переменную.
все работает только как то не спокойно за синхронизацию изменения состояния флага.

код я в форуме делфи выложил. ссылка выше. не хочу мусорить в форуме.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462260
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
std::mutex mtx;
//////////////////////////////////////////////////////////////////////////////////////
 class TCppTask : public TCppInterfacedObject<TProc>
  {
  public:
  TBuffer CCMResult;

  int ii;  

  TCppTask(TBuffer CCMResult )
  {
	ii = CCMResult.Rpm ;
  }
  void __fastcall Invoke()
	{
		mtx.lock();
		String s=  IntToStr(ii);
		FormMain->Label_RPM->Caption =  s ;	
тут вывод картинки

       //        Sleep(1000); // это лишнее
       //  vmesto sleep podstavljaem mnogestvo parametrov neobhodimich dlja pokaza
	// parametrov och mnogo odin iz nich 7000 tochek na TChart.
	}
		mtx.unlock();
};
//////////////////////////////////////////////////////////////////////////////////////////
 TFormMain::TimerRequestTimer(TObject *Sender)
    if (ccm->GetResult((TBufferCast *)&Result)>0)
	{
		mtx.lock();
           ...zapis dannich 
		mtx.unlock();
        _di_ITask task = TTask::Create(_di_TProc(new TCppTask(Result))); 
           task->Start();//zdes po idee idet pokaz v otdelnom taske
         
           ... rascheti dannich     

   if (Reactivate) { TimerRequest->Enabled = true;..//timer krutitsja poka ne ostanovjat 
          }

////////////////////////////////////////////////////////////////////////////////////////


PS Если std::mutex будешь использовать, то для него есть std::unique_lock
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462261
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

другими словами как главному тайму(программе) узнать что таск закончил работу чтобы запустить таск заново. Естественно автоматически и внутри таймера с передачей данных через коструктор
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462267
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

немножечко не так. при работе таймера я создаю обьект таска. и пока он не закончит работу. я не создаю новый таск. Вопрос как узнать окончание работы таска?
если таймер не узнает что таск есче работает он создает новый таск пока не заполнит память.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462270
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

немножечко не так. при работе таймера я создаю обьект таска. и пока он не закончит работу. я не создаю новый таск. Вопрос как узнать окончание работы таска?
если таймер не узнает что таск есче работает он создает новый таск пока не заполнит память.
Он не создаст новый таск пока старый не отработает. Ты мутексами пользовался когда-нибудь?
Если один поток захватил мутекс (mtx.lock()) то второй поток повиснет на mtx.lock() до тех пор пока первый не вызовет mtx.unlock()
т.е. пока первый таск работает - твой код будет висеть пока таск не отработает

Если висеть не надо, то можно проверить блокировку
Код: plaintext
1.
2.
3.
4.
5.
6.
if(!mtx.try_lock()) {
   ... еще работает 
   return;
}
...
mtx.unlock();
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462278
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю "Parallel Programming Library" это дельфийный С++. Если так то лучше в дельфи спросить как этими тасками пользоваться, т.к. это не С++, а самостоятельная либа, которую в С++ мало кто использует.

Вот нагуглил :
авторTTask – это класс, который позволяет запускать одну задачу или несколько задач параллельно. При этом вам не придётся создавать поток и управлять им. Класс TTask реализует интерфейс ITask. В интерфейсе ITask в вашем распоряжении есть функции для запуска (Start), ожидания (Wait) и отмены (Cancel) задачи и статус (Status), позволяющий узнать, что происходит с задачей. Вот возможные статусы задачи: Created (задача создана), WaitingToRun (задача ожидает окончания выполнения другого процесса), Running (задача выполняется), Completed (задача завершена), WaitingForChildren (задача ожидает окончания выполнения дочерней задачи), Canceled (задача была отменена), Exception (при выполнении задачи произошла ошибка).
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462283
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

мютексами не пользовался думаю ничего военного. останавливать и ждать нельзя. просто таймер молотит свою работу и по освобождению таска выдает ему новое задание. все. Я немогу узнать окончание работы таска!

не надо никого блокировать. все работает без ожиданий.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462292
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

проблемма в том что инфы оч мало. в делфях тоже все подвисают никакой конкретики. общие фразы.
то что ты.вы. нашли(шел) я не знаю как правильней:) я уже давно как сон вижу. в эмбаркадеро три кастрированных примерчика которые на примитивном уровне обьясняют . А дальше сам...
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462298
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

вот я и мыкаюсь в поисках спецов конкретики а получаю обобщенные советы подумать на тему а не использовать ли опен джиэль в тчарте. Я без претензий:) мне бы хелп получить.
с ув Виктор !
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462321
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

проблемма в том что инфы оч мало. в делфях тоже все подвисают никакой конкретики. общие фразы.
то что ты.вы. нашли(шел) я не знаю как правильней:) я уже давно как сон вижу. в эмбаркадеро три кастрированных примерчика которые на примитивном уровне обьясняют . А дальше сам...
Документация на это поделие (TTask, Timer) есть в инете хоть какая-нибудь? Если есть - давай ссылки.

Распараллеливание - это достаточно сложная тема с кучей граблей. По-хорошему надо начинать с этой книги Джеффри Рихтер Создание эффективных Win32-приложений

PS Правильно "ты"
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462339
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

мютексами не пользовался думаю ничего военного. останавливать и ждать нельзя. просто таймер молотит свою работу и по освобождению таска выдает ему новое задание. все. Я немогу узнать окончание работы таска!

не надо никого блокировать. все работает без ожиданий.
Если останавливать нельзя, то таск должен как-то оповестить что он закончил. Не надо проверок таска, он должен инициировать дальнейшую работу.

Как вариант: запускать таймер таском, т.е. при срабатывании таймера останавливаешь таймер, подготавливаешь таск, запускаешь, в конце работы таска высчитываешь сколько времени осталось до следующей сработки, ставишь на это время таймер, запускаешь таймер и так по кругу.

Можно проще: вместо таймера просто собственное виндовое сообщение, по которому происходит подготовка исходных данных, а в таске в конце Sleep() на время до следующей сработки и отправка сообщения.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462415
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Распараллеливание - это достаточно сложная тема с кучей граблей. По-хорошему надо начинать с этой книги Джеффри Рихтер Создание эффективных Win32-приложений только там о тасках нет ничего.:(

настольная книга в пдэфе. таймер не останавливается!!!!! Я могу облокотится на время работы таска. Но таймер должен работать без остановов локов ожиданий итд.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462424
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462435
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikтолько там о тасках нет ничего.:(
Там об устройстве виндовса и WinAPI, на котором таски и таймеры работают. И о подводных камнях многопоточных приложений.

Похожим образом устроены таски в C#, можешь про них почитать у того же Рихтера Глава 27. асинхронные вычислительные операции

komvikНо таймер должен работать без остановов локов ожиданий итд.
Мой пост выше читал 20523566 ?
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462453
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Как вариант: запускать таймер таском, т.е. при срабатывании таймера останавливаешь таймер, подготавливаешь таск, запускаешь, в конце работы таска высчитываешь сколько времени осталось до следующей сработки, ставишь на это время таймер, запускаешь таймер и так по кругу.


таск создается в РАБОТАЮЩЕМ БЕЗ ОСТАНОВКИ таймере И живет своееей жизнью.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462461
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

так я и создал флаг пока что как лэйбл чтоб было видно. потом сделаю просто bool переменную.
все работает только как то не спокойно за синхронизацию изменения состояния флага.
код я в форуме делфи выложил. ссылка выше. не хочу мусорить в форуме.Т.е. проблему ты решил, а вопрос только с синхронизацией доступа к bool/TLabel из разных потоков?

Ты главу 8 "Джеффри Рихтер Создание эффективных Win32-приложений" внимательно читал?
Еще тут посмотри http://www.cplusplus.com/reference/atomic/
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462465
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_Sla,

нет не внимательно. т.е если я обьявлю флаг атомик то могу избежать последовательных ошибок? не дошло:(
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462466
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik П.С. пытался определить в разных местах статуци типа
Код: plaintext
1.
if (task->Status == TTaskStatus::Completed) 


но при "Sleep ( mnogo dannich 8000)" не помогает. Таймер перестартовывает раньше.
Это не помогает т.к. таски разные проверял, т.е. ты сначала таск создал и сразу проверяешь, естественно он еще не закончил.
Надо task сделать свойством класса TFormMain, а не локальной переменной.
Т.е. примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class TFormMain {
_di_ITask task = NULL;
 ...
}

 TFormMain::TimerRequestTimer(TObject *Sender)
if (task == NULL || task->Status == TTaskStatus::Completed) {
  ... таск не запускался или завершился
  ... 
         task = TTask::Create(_di_TProc(new TCppTask(Result))); 
         task->Start();//zdes po idee idet pokaz v otdelnom taske
}
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462467
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

можно поподробнее если не сложно.пожалуйста.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462469
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikm_Sla,

нет не внимательно. т.е если я обьявлю флаг атомик то могу избежать последовательных ошибок? не дошло:(попробуй внимательно прочитать)
это будет быстрее, чем ждать, что кто-то за тебя программу напишет
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462474
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

О. наконец то. алилуя . щас попробую отпишусь хотя у меня таск создан в привате хеадера. Но не инициализирован в мэйне. бегу пробовать. мэнисенкс.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462475
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_Sla,

да дело не в почитай елыпалы. мужуҡи я не лентяй я в непонятке.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462482
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 когда запустился таймер, но таск еще работает?
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462488
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Это. Ты. Гэниально. Все работает. Даже не знаю как и спасибочки выразить. сто плюсов тебе в карму.Чем могу отблагодарить?
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462493
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

Дима таймер работает 50милисек ттаск я подвешиваю слипом на 40сек. и все фунциклюет. жму руку.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462507
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

Это. Ты. Гэниально. Все работает. Даже не знаю как и спасибочки выразить. сто плюсов тебе в карму.Чем могу отблагодарить?
Рихтера прочитай внимательно :)
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462540
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

да уж и так читаю читаю така зеленая как купорос...( надеюсь цитата уместна.:)) есче раз спасибо. если честно не надеялся на помощь. и ведь решение на поверхности. а вот те нате.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462599
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж, ну и рассказик получился. Мы тут советуем какой молоток лучше использовать, а он просто не знал куда гвоздик забить
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462630
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Да уж, ну и рассказик получился. Мы тут советуем какой молоток лучше использовать, а он просто не знал куда гвоздик забить

ага типа мы пахали. еслиб не дима...... вас пардон я в рассказе не припоминаю. звиняйте еси шо не так.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462639
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikага типа мы пахали. еслиб не дима...... вас пардон я в рассказе не припоминаю. звиняйте еси шо не так.
ну ты же ветку не только здесь открыл
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462649
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikага типа мы пахали. еслиб не дима......
Руслан все правильно написал. Пахать тут нечего, играли в угадайку. Телепатов тут нет, мой хрустальный шар случайно оказался более правильным. Я до кучи написал тот пост и ... угадал. Случайно!
Но тот пост не соответствует тому что надо было получить, т.е. твоему ТЗ, тому что ты выше писал и рисовал. Учись правильно вопросы формулировать.
Не зря говорят: "Правильно заданный вопрос содержит половину ответа".

PS Совет: если еще будешь спрашивать про свой Delphi C++, то сразу давай ссылки на документацию по используемым объектам, т.к. эту экзотику тут мало кто знает.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462743
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikтаск создается в РАБОТАЮЩЕМ БЕЗ ОСТАНОВКИ таймере И живет своееей жизньюобъяснил как бог!

таймер работает 50милисек ттаск я подвешиваю слипом на 40сек. и все фунциклюета теперь давай 40+random(20)сек

Код: plaintext
1.
 task->Start();//zdes po idee idet pokaz v otdelnom taske

и, наверное, в этом показе присутствует 'Synchronize' ? ( конечно же - так в книжках пишут! )
А потом туда захочется воткнуть и 'ProcessMessages'. ( ну, чтоб формочку за уши потягать, когда показ )

И вот тогда, работающий без остановки таймер , укусит себя за хвост.
( создается новый таск в заново стартонувшем сообщении от таймера снова и снова пока не подвешивает прогу.)

Поздравляю, за что боролись - на то и напоролись ))
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462877
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM,

Да ладно.не пинайте. можно подумать все вы с пеленок код писать начали.
Все замечания приняты. в следующий раз буду соответствовать .
Я же суда не потрындеть пришел а за помощью. Помогли . Огромное спасибо.
Лучше бы подсказали как правильней . С учетом (не моих) жестких требований.
Да, если человек не понимает, если читает и не понимает, то не надо сразу ....
Были бы нароботки было бы легче.
Есть нюансы таймера. ? Напиши. Не суй пальцы в розетку. а не ждать пока тыкнет а потом посмеиваться . я ж типа говорил, вот жеж неуч.

А. по поводу "без остановки". таймер иногда прерывают для изменения входных данных. И есче. Я бы с удовольствием весь код показал, но за это меня мое начальство отлюбит. неразрешено. вот и пыхчу.


P.S. все равно. Спсбо.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462881
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

Отдельное сори. Я с Делфи на с++ прыгал не понял кто где писал. Стрес. итд. в общем извини за непонятку.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462893
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Дима что значит Т3? у меня один таймер.
Dima TКак программа должна отработать в 00:03.00 когда запустился таймер, но таск еще работает?
таймер игнорирует таск и продолжает работу. пока таск не покажет что он закончил.

Я может не все понимаю. это решение,которое ты написал. Оно правильное? или грабли?
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462898
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvik,

не дописал... . И передаст в таск данные при следующем старте таймера.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462920
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

Дима что значит Т3? у меня один таймер.
Техническое Задание, т.е. что конкретно должно получиться в итоге.
komvikЯ может не все понимаю. это решение,которое ты написал. Оно правильное? или грабли?
Если результат тебя устроил, то получается что правильное.
Оно работоспособное, т.е. не сглючит. А как правильно - это определяет ТЗ. Т.е. тебе виднее правильно или нет.

Я тебе выше тоже самое с мутексом предлагал 20523255 , но ты не прореагировал, вот и пойми после этого что ты хочешь.

В общем если устраивает - оставь как есть. Жить будет.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462935
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Почитал есче раз про мьютекс . не совсем понятно как при первом обращении его применить .
если бы пример на моем коде было бы нагляднее.

код живет. правда вчера в конце работы че то глюкнуло. когда я в таск начал из буфера данные вытаскивать. но это я думаю не связанно с решением которое ты предложил.

class TFormMain {
_di_ITask task = NULL;
...
}
это было то что нужно в самом начале создания таска.
task->Status == TTaskStatus::Completed)
а это в процессе работы.


Dima TЯ тебе выше тоже самое с мутексом предлагал 20523255 , но ты не прореагировал,
не не прореагировал . ты писал что идет останов.
Dima TЕсли один поток захватил мутекс (mtx.lock()) то второй поток повиснет на mtx.lock() до тех пор пока первый не вызовет mtx.unlock()
эта фраза меня и смутила.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39462980
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikDima T,

Почитал есче раз про мьютекс . не совсем понятно как при первом обращении его применить .
если бы пример на моем коде было бы нагляднее.
Рихтера читай. Там с примерами и объяснениями.
Глава 8. Синхронизация потоков в пользовательском режиме
Глава 9. Синхронизация потоков с использованием объектов ядра
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39463077
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komvikЛучше бы подсказали как правильней 20521699 (если интересно могу разжевать)
С учетом (не моих) жестких требований.Каких требований, vcl-ttimer и ttask? Ну, держись за них, руководство любит послушных.
если человек не понимаетесли программист не понимает - делает пример и изучает. http://forum.vingrad.ru/forum/topic-60076/view-all.html
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39463201
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM,

Не моих, значит вышестоящие писатели проги , требующие оптимизации без изменений.
разжевывать нет необходимости. понятно. за ссылку спасибо почитаю.

не хватает (читается нет ) профзнаний правильного распределения потоков с учетом использования одних и тех же ресурсов.

потоки(не мной)решено было не использовать. а использовать таски.
...
Рейтинг: 0 / 0
Parallel Programming Library TTask+Timer (c++)
    #39463204
komvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bred eFeM,

наверно пока на этом все. почитаю есче. потом позадаю еще не много глупых вопросов. спасибо всем.
тема закрыта.
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Parallel Programming Library TTask+Timer (c++)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]