![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать количество потоков работающих в данный момент времени [D6, XP]
image © (2006-11-10 01:53:00)При написании многопотокового сканера сети, столкнулся с такой проблеммой. Программа создает 255 потоков, которые производят пинг (использую библиотеку компонентов ics - Ping). За 2-3 сек выводит IP-адреса найденных ПК, Timeout-ы и имена ПК, но результаты нестабильные, создается впечатление что потоки мешают друг другу. Нестабильность проявляется в том, что количество найденных ПК колеблется, и чем слабее ПК, тем больше разница. Я думаю что необходимо проконтролировать количество одновременно запущенных потоков, т.е. ограничить их количество например до 16-32, но незнаю как это сделать. Подскажите пожалуйста как создать счетчик запущенных процессов
Anatoly Podgoretsky (2006-11-11 22:36:00) [1]> Джо (11.11.2006 21:05:49) [49]
А чего гадать, вы устроили личную переписку/перепалку
Джо (2006-11-11 21:05:00) [2]> [48] Anatoly Podgoretsky © (11.11.06 20:45)
> > Джо-со-смарта (11.11.2006 18:05:45) [45]
>
> А мой помещен, в общем вы сами догадались.
Анатолий, Вы, как всегда, загадочны. Ушел думать... :)
Anatoly Podgoretsky (2006-11-11 20:45:00) [3]> Джо-со-смарта (11.11.2006 18:05:45) [45]
А мой помещен, в общем вы сами догадались.
MikePetrichenko (2006-11-11 18:42:00) [4]В догонку.
Ни в коем случае не хочу утверждать, что мой код есть правильный и хороший стиль программирования. На вкус и цвет...
НО! Если есть заведомо верное решение, рекомендованное к использованию производителем ОС, то нет оснований его не использовать, а изобретать велосипед. Не думаю, что программисты Microsoft глупее нас с вами.
P.S. Если
> Ну, насчет любви к глобальным переменным — это к дядюшке
> Борланду
,
то не вижу повода подражать такой глупости без ОБОСНОВАННЫХ причин использования глобальных переменных, так как сие тянется с очень древних времен. Или Borland у нас стал стандортом написания Windows приложений?
MikePetrichenko (2006-11-11 18:35:00) [5]
> Ну, а мой код был написан и помещен для демонстрации того,
> что я 'обозвал' менеджером и что есть 'счетчик' ибо на
> словах это обьяснить отчаялся. И судить по нему о моей любви
> к 'глобальным переменным' -- не менее смешно.
Дословно написано:
> Всегда поражался, как народ люит глобальные переменны и
> жрать время процессора
Причем на этом форуме (и не только на жтом) это всегда выдается новичкам как правильныйи хорошийстиль программирования контроля ресурсов. Мне просто лень сейчас все подобные советы выгребать. Но их не мало.
Однако, это не есть правильный и хороший стиль. Это есть отсутствие желания напрячься и почитать документацию.
Джо-со-смарта (2006-11-11 18:05:00) [6]Ну, а мой код был написан и помещен для демонстрации того, что я 'обозвал' менеджером и что есть 'счетчик' ибо на словах это обьяснить отчаялся. И судить по нему о моей любви к 'глобальным переменным' -- не менее смешно.
MikePetrichenko (2006-11-11 17:16:00) [7]
> Так не приводи маленький кусок кода, приводи достаточный.
Этого куска кода вполне достаточно, что бы показать пример использования семафоров.
Для чего он и был помещен, а не как показатель качества/не качества моего кода. Для соих целей он достаточен. Для готового приложения/функции - нет.
Полный код является коммерческим программным продуктом, по сему опубликовал, только имеющий отношение к теме кусок. Или может мне вместе с кодом моих программ сюда и номера кредиток помещать?
Anatoly Podgoretsky (2006-11-11 16:45:00) [8]> MikePetrichenko (11.11.2006 16:20:42) [42]
Так не приводи маленький кусок кода, приводи достаточный.
MikePetrichenko (2006-11-11 16:20:00) [9]
> Хотя бы потому, что блок try..finally печально отсутствует,
> а мест, в которых может произойти exception — достаточно
Да ну! Я раньше не верил в телепатию.
Нет. Конечно try..finally у меня отсутствует. Зато есть try...except. (Странно, не правдали).
Да и еще. Уж поверьте, ошибок там 100% не произойдет, кроме как поток не создастся, что ОЧЕНЬ МАЛО ВЕРОЯТНО.
Так что - тренируем телепатор дальше.
P.S. Никогда не делайте выводы о содердимом програмы (кода) по его ОЧЕНЬ маленькому куску.
Джо (2006-11-11 16:17:00) [10]Хотя бы потому, что блок try..finally печально отсутствует, а мест, в которых может произойти exception — достаточно.
MikePetrichenko (2006-11-11 16:07:00) [11]
> Или даже еще ближе — к коду из [4], который, как видно,
> взят из рабочего проекта. Да только там ему не место.
Из АБСОЛЮТНО рабочего.
И почему же ему там не место. Или у вас настолько равиты телепатические способности, что вы можете видеть ВЕСЬ код, откуда выдран данный кусок и предсказать, что же там все-таки делается и почему сделано именно так?
Джо (2006-11-11 04:51:00) [12]> [36] MikePetrichenko © (10.11.06 20:03)
>
> > while FThreadsCount >= FMaxThreads do
> > Application.ProcessMessages;
>
> Всегда поражался, как народ люит глобальные переменны и
> жрать время процессора :)
> Чем вам семафоры не угодили? Или дядюшка Билли их для своего
> развлечения придумал.
>
> В сад.
Ну, насчет любви к глобальным переменным — это к дядюшке Борланду, был у него такой грешок.
А насчет "в сад" — это, пожалуйста, к зеркалу. Или даже еще ближе — к коду из [4], который, как видно, взят из рабочего проекта. Да только там ему не место.
MikePetrichenko (2006-11-10 20:08:00) [13]
> Ну сделай те тогда форум для "Начинающие начинать пытаться
> разобраться в программировании на Дельфи" :-)
Дык уже было предложение - "Надмозги".
Голосуем! Кто за?
image (2006-11-10 20:04:00) [14]Ну
> +-1 это не уровень начинающего, это ниже.
Ну сделай те тогда форум для "Начинающие начинать пытаться разобраться в программировании на Дельфи" :-)
MikePetrichenko (2006-11-10 20:03:00) [15]
> while FThreadsCount >= FMaxThreads do
> Application.ProcessMessages;
Всегда поражался, как народ люит глобальные переменны и жрать время процессора :)
Чем вам семафоры не угодили? Или дядюшка Билли их для своего развлечения придумал.
В сад.
Anatoly Podgoretsky (2006-11-10 19:59:00) [16]image (10.11.06 19:50) [33]
С Инди тоже самое - положите на форму компонент и наберите данный код, если он вообще нужен.
С остальным, с разобраться проще - все это в исходных кодах, разбирайся по самое немогу, раз такое желание есть и силы есть разбираться, мы то тут зачем, у тебя все на твоем компьютере.
Anatoly Podgoretsky (2006-11-10 19:57:00) [17]+-1 это не уровень начинающего, это ниже.
image (2006-11-10 19:50:00) [18]
> Подозреваю, что и потоки те самые тебе не нужны - ф-ции
> для работы с протоколом ICMP реализуют и асинхронный вариант
> использования.
Я тоже подозреваю что при помощи ICMP было бы намного лучше, но ни где не встречал хорошего описания компонентов инди. В инете много примеров, но там так - положите на форму TLabel, TMemo, TButton и скопируйте вот этот кусок кода.Все.Программа готова. Даже иногда и работает. А чего он там инициализирует перед использованием компонента - ни строчки. Хочется разобраться как это работает, а не тупо копировать куски кода.
Ketmar (2006-11-10 18:17:00) [19]>[31] image 10-Nov-2006, 17:01
>Ребята, прошу не пинать ногами, ведь я зашел на форум для начинающих!
тебя ещё никто не пинал. полазь по форуму немного, увидишь, что такое "пинать". заодно оценишь, как с тобой вежливо обходились %-). я сам удивлён, что всё так прилично. видимо, звёзды к тебе были благосклонны. %-))
image (2006-11-10 17:01:00) [20]> Ketmar (10.11.2006 04:14:25) [25]
>Как то странно, потоки и неумение создать элементарнейший счетчик, >гримасы образования.
Ребята, прошу не пинать ногами, ведь я зашел на форум для начинающих! Ничего плохого в том что люди стремятся к знаниям нет. А на счет счетчика (менеджера потоков) могу сказать, что самым страшным оказалось слово МЕНЕДЖЕР:-). После прочтения кода (еще раз спасибо Джо), во всем разобрался.