![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]()
Привет, можно ли запустить 20 потоков с помощью цикла?
Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
да. но как их потом ждать, убивать? если не надо ждать и они самоубиваются - норм
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]() Цитата:
уже пробую через BeginThread, но параметры приходят битые почему то.. а в нормальный паток параметры передать не удалось, но с ним проще, он сам умрет по завершению, так что если прогу закроют, они либо умрут либо выполнятся и умрут это я все пытаюсь ускорить сканер портов путем потоков, по одному долго очень с параметрами разобрался и потоки создаются, но в случае ошибки except не срабатывает и поток висит вот его процедура Код:
listipF.Add(listip[i]); тут нет цикла и неоткуда брать i, вот так надо listipF.Add(Parameter.ip); Последний раз редактировалось PTyTb32; 10.09.2018 в 22:45. |
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
Лучше сделать пул потоков. массив потоков.
поток сам берет параметр из списка, обрабатывает и убивается столько при отсутствии параметров в списке, не забывая вычистить себя из пула. и среда какая? Delphi хорошо так шагнул вперед с потоками и параллельной обработкой...
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]()
XE 10.2 их запускает цикл передавая каждому ip, сейчас борюсь с лютыми утечками, вылетает out of memory если диапазоны огромные. потоки живут не дольше полусекунды если доживет до пол секунды, то except вызванный connectionTimeout приведет к завершению потока, а если подключится то раньше убьется.
|
![]() |
![]() |
![]() |
#8 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Потоки кушают много памяти. Ограничьте число потоков.
компоненты VCL не потокобезопасны поэтому вот этот участок следует выполнять через Synchronize в главном потоке. Код:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]()
без этих потоков он проверяет адреса последовательно, а это очень долго.
Synchronize используется в других потоках, я использую BeginThread и выглядит это вот так Код:
Код:
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Фигня какая-то, а не функция.
Уберите оттуда всю работу с формой, сделайте чистую функцию, которая просто принимает адрес и возвращает результат. При завершении потока передавайте куда-нибудь результат, например с помощью событий/callback'ов, синхронизируйтесь с основным потоком. В TThread вроде есть готовый OnTerminate для этого.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Потоки. Закрываются все потоки при ошибке в одном. | Son | Общие вопросы Delphi | 11 | 01.11.2013 09:32 |
потоки | Cpluser | C# (си шарп) | 1 | 28.10.2012 17:00 |
Потоки | _Mixer_ | Общие вопросы по Java, Java SE, Kotlin | 4 | 16.10.2011 19:25 |
Потоки С++ | Aleksin | Помощь студентам | 1 | 07.11.2010 18:15 |
потоки | tanek | Помощь студентам | 6 | 15.03.2010 21:42 |