Вверх ↑
Этот топик читают: Гость
Ответов: 373
Рейтинг: 108
#1: 2009-06-27 20:32:24 ЛС | профиль | цитата
Cоветники проверьте пожалуйста схему на ошибки.
Мне не ясно как работать с мультиками чтобы память не разрасталась и как правильно использовать потоки

code_13914.txt

Relay
RegExp
карма: 0

0
файлы: 1code_13914.txt [18.6KB] [376]
Ответов: 16884
Рейтинг: 1239
#2: 2009-06-27 20:37:27 ЛС | профиль | цитата
Vlad.-, это такой юмор или серьёзно
Элемент RegExp не найден!
Элемент Relay не найден!

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#3: 2009-06-27 20:47:25 ЛС | профиль | цитата
А у тебя что, хватило ума загрузить схему в ~150 элементов только по той причине, что "не ясно как работать с мультиками чтобы память не разрасталась и как правильно использовать потоки"
карма: 9

0
Ответов: 373
Рейтинг: 108
#4: 2009-06-27 22:06:25 ЛС | профиль | цитата
Galkov, я видел примеры работы с мультиками но не получается у меня освободить память отработавшего мульта, по этому и схему целиком решил залить что-бы указали на ошибки и показали как надо.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#5: 2009-06-27 22:16:08 ЛС | профиль | цитата
Щаз. Неси седло
Почему-то не отвечают

карма: 9

0
Ответов: 373
Рейтинг: 108
#6: 2009-06-28 23:47:14 ЛС | профиль | цитата
7 элементов
code_13923.txt
карма: 0

0
файлы: 1code_13923.txt [1.5KB] [186]
Разработчик
Ответов: 26304
Рейтинг: 2146
#7: 2009-06-29 00:00:59 ЛС | профиль | цитата
Vlad.-, объясни вразумительно, зачем вот такая связка, если ты ее поставил


Add(MutexThread,9519368,154,98)
{
Delay=20
FastStop=0
}
Add(WaitObject,9265819,110,98)
{
Time=33
link(onWait,9519368:doStart,[])
link(ObjHandle,9753050:ObjHandle,[(116,86)(95,86)(95,142)(74,142)])
}
Add(Events,9753050,68,98)
{
Name="Events"
link(onCreate,9265819:doWait,[])
}

Да, и зачем применять защищенный поток, если ты его не используешь
------------ Дoбавленo в 00.04:
И непонятно, чего ты хочешь добиться
Я так понял, что ты хочешь сканировать IP-адреса в независимых потоках, что бы они сканировались, как бы, параллельно, правильно
карма: 22

0
Ответов: 9906
Рейтинг: 351
#8: 2009-06-29 00:38:42 ЛС | профиль | цитата
Вообще-то, MutexThread - Голландский код.
Нарушающий элементарный принцип: защищают от конфликта данных - эти ДАННЫЕ (иначе их называют ресурсами), а вовсе не потоки.
Ну голландцам-то - простительно, у них источники вдохновения легализованы. Но нам-то этот бред - зачем ???

Могу себе представить, как будет выглядеть мастер-класс по использованию этого элемента.
Например для такого случая: первый поток - пишет в первый стрим, второй - пишет во второй, а третий - читает из обоих.
Посмотрел бы на имена этих "защищенных потоков"
карма: 9

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#9: 2009-06-29 00:56:52 ЛС | профиль | цитата
Galkov писал(а):
защищают от конфликта данных

Мда... Согласен, название не очень удачное. Я только потом понял, что их надо было назвать Синхронными Потоками.

Galkov писал(а):
первый поток - пишет в первый стрим, второй - пишет во второй, а третий - читает из обоих

Пока работает первый поток, ни второй, ни третий ничего не сделают, если только второй поток не заставить писать в ждущем режиме, но это при условии, что работает только один мьютекс, а больше и не предусмотрено. По-хорошему, надо было список мьютексов сделать, которые будут синхронизировать разные потоки. С одним такая ситуевина не прокатит, все будут стоять в очереде и ждать завершения предыдущих, выполняя только ждущий режим
карма: 22

0
Ответов: 373
Рейтинг: 108
#10: 2009-06-29 01:09:51 ЛС | профиль | цитата
nesco,
Да, и зачем применять защищенный поток, если ты его не используешь

Куда я только эти патоки не подключал, и обычный, и защищённый и ....(применяя защищенный поток вместо обычного избавился от ошибок 216 при низких задержках)
Пытаюсь максимально ускорить сканирование.
------------ Дoбавленo в 01.20:
nesco,
объясни вразумительно, зачем вот такая связка, если ты ее поставил

Только с такой связкй или чуть изменённой нормально пингуется.
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#11: 2009-06-29 01:21:12 ЛС | профиль | цитата
Попробуй вот так. Адреса сам проставь, вместо моих


Add(MainForm,2953706,259,224)
{
}
Add(MultiElementEx,7766103,413,196)
{
Mode=1
link(onFind,3832331:doAdd,[])
}
BEGIN_SDK
Add(EditMultiEx,7025484,21,21)
{
WorkCount=#5:##add|7:##clear|
EventCount=#6:onFind|
Width=279
Height=151
Point(##add)
Point(##clear)
link(##add,3998772:doEvent1,[(34,27)(34,90)])
}
Add(Ping,3186049,210,98)
{
Name=""
link(onFind,7025484:onFind,[(262,104)(262,27)])
link(Name,10869445:FString,[])
}
Add(Hub,3998772,56,84)
{
OutCount=3
link(onEvent1,10869445:doString,[(124,90)(124,48)])
link(onEvent2,7930871:doOperation,[(91,97)(91,118)])
link(onEvent3,14480913:doStart,[])
}
Add(Math,7930871,112,112)
{
Op2=1
ResultType=0
link(onResult,14480913:doDelay,[])
}
Add(FormatStr,10869445,210,42)
{
DataCount=1
Mask="192.168.1.%1"
Point(FString)
}
Add(Thread,14480913,161,98)
{
Delay=20
FastStop=0
Point(doDelay)
link(onExec,3186049:doPing,[])
}
END_SDK
Add(ListBox,3832331,469,196)
{
Left=10
Top=5
Width=230
Height=245
}
Add(Button,2472279,259,182)
{
Left=280
Top=30
link(onClick,9402517:doEvent1,[])
}
Add(EnumProcess,16426208,357,105)
{
DebugPrivilege=0
Point(doGetMemoryInfo)
Point(doFindName)
Point(onFind)
Point(onGetMemoryInfo)
link(onFind,16426208:doGetMemoryInfo,[(398,118)(398,94)(345,94)(345,132)])
link(onGetMemoryInfo,4388562:doOperation,[])
}
Add(Application,491441,308,77)
{
}
Add(Edit,3029900,455,119)
{
Left=245
Top=5
Width=130
Text=""
}
Add(FilePart,4801445,308,126)
{
NameWOExt=1
link(onName,16426208:doFindName,[])
link(FileName,491441:AppFileName,[])
}
Add(Timer,822341,259,126)
{
Interval=100
link(onTimer,4801445:doPart,[])
}
Add(Math,4388562,406,119)
{
OpType=7
Op2=1000
ResultType=0
link(onResult,3029900:doText,[])
}
Add(For,9643793,343,196)
{
End=255
link(onEvent,7766103:##add,[])
}
Add(Hub,9402517,308,182)
{
OutCount=3
link(onEvent1,3832331:doClear,[(455,188)(455,209)])
link(onEvent2,7766103:##clear,[(392,195)(392,209)])
link(onEvent3,9643793:doFor,[])
}

У меня съедает, порядка, 2 метров на 255 адресов, потом все возвращается, почти на место. Утечка есть, но про это уже известно, она есть в самом мультике при очистке.

Да, задержку меньше 10 не ставь, не поможет, только хуже сделает
карма: 22

1
Голосовали:Vlad.-
Ответов: 373
Рейтинг: 108
#12: 2009-06-29 02:33:11 ЛС | профиль | цитата
nesco,Спасибо.
переделал немного, а то в моей схеме не работало
code_13924.txt

116 элементов все стандартные
code_13925.txt

карма: 0

0
файлы: 2code_13924.txt [2.3KB] [119], code_13925.txt [12.4KB] [482]
Разработчик
Ответов: 26304
Рейтинг: 2146
#13: 2009-06-29 02:50:31 ЛС | профиль | цитата
Vlad.- писал(а):
переделал немного, а то в моей схеме не работало

Странно очень, почему
Ты локальные адреса пингуешь, или глобальные
Если локальные, то медленно очень. Надо попробовать на действующей сети, че-то мне совсем непонятно. Запускаем в ход 255 потоков, те, которые отстрелялись сразу, выдадут инфу по адресам, остальные пофиг, они не мешают
------------ Дoбавленo в 02.57:
Vlad.- писал(а):
116 элементов все стандартные

Что-то у тебя схема дюже мудреная для такого простого алгоритма, как пингование диапазона адресов. Завтра проверю ее на работе в локалке.
Да, а кто тебя научил применять такое несметное количество глобальных переменных
карма: 22

0
Ответов: 373
Рейтинг: 108
#14: 2009-06-29 03:12:35 ЛС | профиль | цитата
nesco, Ничего себе медленно.
С такой начинкой похлеще чем "Angry IP Scanner" пингует
Ты локальные адреса пингуешь
, да
(изменил тайминги и задержки)
code_13927.txt
карма: 0

0
файлы: 1code_13927.txt [1KB] [119]
Разработчик
Ответов: 26304
Рейтинг: 2146
#15: 2009-06-29 07:59:42 ЛС | профиль | цитата
Vlad.- писал(а):
изменил тайминги и задержки

Ну это ты зря. Не стоило делать меньше 10
карма: 22

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