Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#1: 2011-08-14 13:41:48 ЛС | профиль | цитата
Подскажите, пожалуйста, где я дурак? Набиваю стек событиями (15 например), а выходят из него всего 13 или 14. Если убрать потоки из программы - все четко. Но нужно обязательно в новом потоке выполнять (там ресурсоемкие задачи вместо задержки будут)

code_24892.txt
карма: 0

0
файлы: 1code_24892.txt [3.8KB] [133]
Ответов: 1058
Рейтинг: 76
#2: 2011-08-14 13:57:57 ЛС | профиль | цитата
Neo скажу по секрету, открыл Вашу схему, посмотрел что используется сторонний компонент, закрыл и забыл.

Совет.
В таких случаях либо прикладывайте нестандартные компоненты к схеме, либо действующие ссылки приводите. Уж больно не охота искать такие компоненты по форуму, особенно если они мне не нужны
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2011-08-14 14:06:56 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-21 13:17:47
карма: 0

0
Ответов: 1821
Рейтинг: 168
#4: 2011-08-14 14:36:34 ЛС | профиль | цитата
tom-it, я вместо StackEx вставил Stack... там скорее всего такое получается из-за задержки компонента Sleep (ИМХО)
карма: 5

0
Ответов: 704
Рейтинг: 7
#5: 2011-08-14 14:57:53 ЛС | профиль | цитата
а за EventFromData уже расттрел назначили? )) Как же без него сохранить данные в потоке? Как-то по-старинке им и пользуюсь.
Компонент стека здесь: http://forum.hiasm.com//getfile/5878
Навести порядок... критику принял, но дело не в схеме, а в правильности применения потоков. Схема без потоков работает (на входе и выходе одинаковое количество данных, а с потоками данные теряются). Поскольку потоками обращаюсь на интуитивном уровне, нужен совет профи именно по ним.
------------ Дoбавленo в 14.57:
Вроде немного облагородил

Add(MultiElement,9607509,210,98)
{
@Hint=#29:Новый поток с теми же данными|
@Color=0
link(onEvent1,8633488:doEvent,[])
}
BEGIN_SDK
Add(EditMulti,15066390,21,21)
{
EventCount=1
WorkCount=2
Width=559
Height=256
link(doWork1,961680:doPush,[(59,27)(59,55)])
link(doWork2,9896476:doStart,[(53,34)(53,153)])
}
Add(Thread,2883,399,154)
{
@Hint=#20:Запуск нового потока|
Delay=0
FastStop=0
link(onExec,5641744:doData,[])
}
Add(DoData,5641744,455,154)
{
link(onEventData,15066390:onEvent1,[(569,160)(569,27)])
link(Data,14970407:Value,[(461,142)(401,142)(401,226)(342,226)])
}
Add(StackEx,961680,140,49)
{
StackType=0
Point(Count)
Point(onEmpty)
link(onPush,10743730:doEvent1,[])
link(onPop,9542663:doEvent1,[(247,62)(247,160)])
}
Add(If_else,4885084,266,126)
{
Op2=Integer(0)
link(onFalse,4260273:doWork3,[(303,139)(303,116)(219,116)])
link(Op1,13375041:Var,[(272,118)(153,118)])
}
Add(FTCG_Tools,10743730,315,49)
{
@Hint=#29:Автоизвлечение первой команды|
link(onEvent2,4260273:doWork1,[(359,55)(359,90)])
}
BEGIN_SDK
Add(EditMultiEx,15410738,21,21)
{
WorkCount=#36:doEvent1=Первое снятие с шапки стека|44:doData=Сброс на разрешение повторного снятия|
EventCount=#32:onEvent2=Происходит только 1 раз|
Height=242
link(doEvent1,7372775:doCompare,[(49,27)(49,104)])
link(doData,3439140:doData,[(42,34)(42,202)])
}
Add(FT_Memory,4786246,77,49)
{
Default=String(Pusk)
}
Add(FT_If_else,7372775,112,98)
{
Op2=String(Pusk)
link(onTrue,16015841:doEvent1,[])
link(Op1,4786246:Value,[(118,90)(83,90)])
link(Op2,3762355:Value,[(125,90)(132,90)])
}
Add(FT_Memory,3762355,126,49)
{
Default=String(Pusk)
}
Add(FT_Hub,16015841,161,98)
{
link(onEvent1,16748110:doData,[])
link(onEvent2,15410738:onEvent2,[(248,111)(248,27)])
}
Add(FT_Memory,6556541,196,49)
{
}
Add(FT_DoData,16748110,196,98)
{
link(onEventData,12599877:doWork1,[(240,104)(240,80)])
link(Data,6556541:Value,[])
}
Add(FT_Memory,11170075,63,147)
{
Default=String(Pusk)
}
Add(FT_DoData,3439140,63,196)
{
link(onEventData,12599877:doWork3,[(107,202)(107,142)(65,142)])
link(Data,11170075:Value,[])
}
Add(HubEx,12599877,61,74)
{
Angle=3
link(onEvent,4786246:doValue,[(65,55)])
}
END_SDK
Add(HubEx,4260273,215,84)
{
Angle=3
link(onEvent,961680:doPop,[(219,75)(128,75)(128,62)])
}
Add(Hub,8323232,182,119)
{
link(onEvent1,10743730:doData,[(256,125)(256,62)])
link(onEvent2,4885084:doCompare,[])
}
Add(Debug,13375041,147,98)
{
WEName=""
VDName="V steke"
LogCount=100
link(Data,961680:Count,[])
}
Add(Thread,9896476,84,147)
{
@Hint=#20:Запуск нового потока|
Delay=0
FastStop=0
link(onExec,8323232:doEvent1,[(149,153)(149,125)])
}
Add(Hub,9542663,322,154)
{
link(onEvent1,14970407:doValue,[(348,160)(348,174)(324,174)(324,188)])
link(onEvent2,2883:doStart,[(368,167)(368,160)])
}
Add(Memory,14970407,336,182)
{
}
END_SDK
Add(Sleep,5879541,273,98)
{
Delay=1000000
link(onSleep,9607509:doWork2,[(317,104)(317,108)(198,108)(198,111)])
}
Add(Button,11191553,91,63)
{
Left=90
Top=60
Data=String(fdgdfg)
link(onClick,2251004:doEvent,[(167,69)(167,104)])
}
Add(Debug,8633488,252,98)
{
WEName="Vishlo"
VDName=""
LogCount=100
link(onEvent,5879541:doSleepMks,[])
}
Add(Debug,2251004,175,98)
{
WEName="Voshlo"
VDName=""
LogCount=100
link(onEvent,9607509:doWork1,[])
}


карма: 0

0
Ответов: 1058
Рейтинг: 76
#6: 2011-08-14 14:59:12 ЛС | профиль | цитата
Neo писал(а):
Как же без него сохранить данные в потоке? Как-то по-старинке им и пользуюсь

А что memory не подходит

[offtop]Вот по старинке признайтесь кто посоветовал такое. Уверен что nesco будет очень рад узнать имя первопроходца[/offtop]
------------ Дoбавленo в 14.59:
Neo писал(а):
Компонент стека здесь: http://forum.hiasm.com//getfile/5878

уже нету.
карма: 0

0
Ответов: 704
Рейтинг: 7
#7: 2011-08-14 15:06:29 ЛС | профиль | цитата
Ели вкратце описать - данные приходят в стек, и первый стразу выходит на обработку, остальные стопорятся на выдачу. После завершения (в примере это задержка) разрешается выдача следующего из очереди. И так постоянно: все в очереди на обработку. Но вот потоки как-то интересно себя ведут в моем случае. Теряются данные и все тут.
------------ Дoбавленo в 15.05:
http://forum.hiasm.com/xf/attach/share/StackEx.rar - вот он! Ловите его, окаянного!
------------ Дoбавленo в 15.06:
На счет мемори у меня фобия на то, что он жрет память и более ресурсоемкий. Это только фобия?
карма: 0

0
Ответов: 8930
Рейтинг: 823
#8: 2011-08-14 15:19:58 ЛС | профиль | цитата
Neo, не пробовали выход потока брать с точки onSyncExec, иногда помогает.
------------ Дoбавленo в 15.19:
Вот, оказывается, откуда ноги растут у EventFromData
карма: 19

0
Ответов: 704
Рейтинг: 7
#9: 2011-08-14 15:29:35 ЛС | профиль | цитата
Леонид, провобал (каюсь) но результат нулевой. Вот клацаю я по кнопке раз 12 подряд, а на выходе 10...
карма: 0

0
Ответов: 8930
Рейтинг: 823
#10: 2011-08-14 15:43:49 ЛС | профиль | цитата
Neo, вообще-то процессор, хоть и многоядерный, но один; свои четыре ядра мне удалось загрузить
------------ Дoбавленo в 15.43:
HiAsm-овской программой на 100% только используя несколько потоков без выключения,
------------ Дoбавленo в 15.43:
у Вас поток создаёт ОДНО событие и отключается, думается, что так Вы выигрыша в скорости не получите, а лишь головную боль
карма: 19

0
Гость
Ответов: 17029
Рейтинг: 0
#11: 2011-08-14 15:55:04 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-21 13:17:48
карма: 0

0
Ответов: 704
Рейтинг: 7
#12: 2011-08-14 16:04:12 ЛС | профиль | цитата
Леонид, вроде понял, но события идут не постоянно, а волнообразно (то много, то вообще нет). Вот мне эту волну нужно "разгрузить", поскольку процессор такую волну иногда долго перерабатывает, вся программа тормозит и сбивается очередь опросов микроконтроллера, который набивает за это время полный буфер с артефактами
------------ Дoбавленo в 16.04:
Может моя проблема кроется в неправильном включении потоков или еще может где добавить один? Или может есть смысл их выключать при пустом стеке (ну это на крайний случай). Хотелось бы без выключалок.
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#13: 2011-08-14 16:13:32 ЛС | профиль | цитата
178.123.72.171 писал(а):
nesco 1000$ обещал за голову того кто первый начал использовать EventFromData вместо Memory

Не не общал, я столько не заработал за все время пребывания на форуме. С чего платить-то
Neo писал(а):
На счет мемори у меня фобия на то, что он жрет память и более ресурсоемкий

А вот с этого места подробнее, со всеми выкладками по поеданию памяти и ресурсоемкости в сравнительных характеристиках. Иначе, все это считаем пустым бла-бла-бла
карма: 22

0
Ответов: 704
Рейтинг: 7
#14: 2011-08-14 16:19:54 ЛС | профиль | цитата
nesco, не судите строго только что вспомнил что это фобия и ничего больше, поскольку когда-то отлаживал схему, и поставил туда кучу мемори (так пришлось), а схема не сработала. вот после этого я почему-то придумал что мемори нужно очищать перед записью каждый раз. Потом, конечно, разобрался, но "ложки мы уже нашли, а осадок остался" Буду усердно исправляться.
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#15: 2011-08-14 16:20:29 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-21 13:17:48
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)