powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Parallel Programming Library TTask+Timer (c++)
25 сообщений из 52, страница 2 из 3
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
25 сообщений из 52, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Parallel Programming Library TTask+Timer (c++)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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