|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|||||||||||
Про потоки с нуля03.09.2017, 20:11. Показов 1964. Ответов 37
Метки нет (Все метки)
Пробую осилить потоки по записи в блоге от krapotkin
Читал много, но эта запись далась легче всего. Но все равно есть нюансы, ответы на которые сложно найти на просторах интернета. Есть программа:
1. Программа все таки висит во время работы. Но если я правильно понял то только во время запуска потоков а не во время их работы. 2. Кол-во потоков сразу летит к SAME_TIME=500; и не играет роли сколько стоит MAX_THREADS=5; В лог пишет так: запущен URL 1 запущен URL 2 ....................... запущен URL 499 запущен URL 500 URL 32:503 URL 34:503 URL 35:503 URL 33:503 URL 36:503 =========================== Работа окончена URL 37:503 URL 39:503 URL 41:503 URL 40:503 ..................... 3. Как и где описать переменную th.paramXXX. Спасибо.
0
|
|||||||||||
| 03.09.2017, 20:11 | |
|
Ответы с готовыми решениями:
37
Про потоки Вопрос про потоки
|
| 04.09.2017, 16:19 | ||||||||||||||||
|
extrimportal,
Есть скайп? Добавлено через 9 минут Смотри что у меня, по моему у нас одно и тоже
Здесь я ожидаю освобождение потоков
0
|
||||||||||||||||
|
|
||
| 04.09.2017, 16:19 | ||
|
в вашем коде MAX_THREADS=5 SAME_TIME=50 если посмотреть в исходную логику, то MAX_THREADS > SAME_TIME и когда количество запусков = MAX_THREADS, все остановится у вас же изначально это условие не выполнится никогда, поэтому все повиснет этак через 3-5 тысяч стартов... либо измените логику либо MAX_THREADS
1
|
||
| 04.09.2017, 16:48 | |||||||||
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|
| 04.09.2017, 16:52 [ТС] | |
|
7 раз переписывал это сообщение. В результате скажу вам просто - имя константы вы выбрали очень интересно.
popryduhin вы тоже поменяйте местами колво потоков и колво записей которые нужно обработать
0
|
|
| 04.09.2017, 18:15 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|||||||||||||||||||||||||||||||
| 05.09.2017, 01:50 [ТС] | |||||||||||||||||||||||||||||||
|
krapotkin извините но очевидно вам, а нам далеким иногда хватит первой строки и нехватки знаний что бы пойти воооооообще в другую сторону
и несмотря на это обсуждаем мы все же ваш код, как тот который из всех примеров легче всего принять и понять ![]() Имею ввиду попробуйте поставить:
Лично я много переделал но опять через нехватку знаний вошел в тупик вот в чем: есть запуск программы:
Вопрос в том как исправить на то что бы было правильно? Если "i" сделать переменной public - ошибка. Если не сделать то как правильно записать
Спс... Добавлено через 9 минут Так же интересует правильней ли будет использовать
0
|
|||||||||||||||||||||||||||||||
| 05.09.2017, 02:00 | |
|
0
|
|
|
|
|||
| 05.09.2017, 07:14 | |||
|
переменная должна использоваться в минимально возможной области
если она использована только внутри процедуры, то делаем ее локальной, если нет - делаем ее полем класса формы глобальные это чаще всего просто мины отложенного действия, хотя работать конечно тоже будет. приложение которое делает не 2*2 а в точности то же что и вы, я обычно указываю сразу при возникновении тем про потоки и интернет: Оптимизация приложения "менеджер закачек"
0
|
|||
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
||||||||||||||||||||||||||
| 06.09.2017, 10:39 [ТС] | ||||||||||||||||||||||||||
|
Первое оставил, все остальное исправил на читабельные имена. Даже не замечал что у меня везде одни едиты)
Почти все готово, все перетащил, программа работает намного быстрее и не жрет память. Осталось несколько мелочей. А именно: с чекбоксом. Делаю так:
и проблема с паузой по примеру krapotkina с блога https://www.cyberforum.ru/blog... g4875.html Дело в том что если все так сделать и в мемо будет список для потоков к примеру: 1 2 3 4 5 6 7 то без паузы потоки так и берут с мемо строки 1 2 3 4... а с условием на Terminated получаются копии потоков и в результате 1 1 1 2 2 1 2 1 1 2 2 2 2 2 1 1 2 2 2 2 2 1 2 1 2 2.... кроме того после нажатия на паузу все не останавливается, а просто отдается пустой результат от потоков. то есть если запустить список из 50000 строк и нажать на стоп через секунду, то все равно надо ждать пока все потоки запустятся и отдадут пустой результат. Можете подсказать как исправить?
0
|
||||||||||||||||||||||||||
|
|
|||
| 06.09.2017, 10:54 | |||
Сообщение было отмечено extrimportal как решение
Решение
пауза только для демо, ее не должно быть в рабочей программе
про остальное - нужно видеть текущий код нажимаете тут в тулбаре в кнопочках плюсик, потом delphi и в серединку копируете ваш текст получается аккуратно и не простыня
1
|
|||
|
0 / 0 / 0
Регистрация: 28.02.2015
Сообщений: 83
|
|
| 06.09.2017, 12:17 [ТС] | |
|
А если допустим нужно осилить паузу или стоп в рабочей программе?
Про чекбокс, усталость сыграла роль, исправил. Тогда вроде все, перенес все - все работает ![]() Спасибо всем и 95% от спасибо уважаемому krapotkinу! Не прошло и пол года как я всем выносил мозг но добился результата! ![]() ![]()
0
|
|
|
|
|
| 06.09.2017, 13:26 | |
|
пауза или стоп в программе у меня в одном из примеров разобрана в том же посте
Добавлено через 54 секунды это для вас это пауза, для программы - нет. она делает свои дела - рисует, слушает систему и мышь и т.д.
0
|
|
| 10.09.2017, 16:49 | |
|
extrimportal,
И все же, с помощью счетчиков ограничиваем количество потоков? если мне предстоит 10 000 000 потоков выполнить?
0
|
|
| 10.09.2017, 17:01 | ||
|
сделай массив потоков
заполняй его и жди когда кто-то выполнится, на его место пихай еще поток
0
|
||
| 10.09.2017, 18:33 | ||
|
Реализация выполнена с помощью счетчика, то есть, есть некая переменная которая увеличивает свое значение при создании потока, есть некое условие при выполнении которого основной поток приостанавливает создание дочерних потоков. И все как бы работает и я могу указать количество потоков, так же в мониторе ресурсов видно количество потоков, так же растет нагрузка, пропорционально растет и производительность.
0
|
||
| 15.09.2017, 22:21 | ||
|
Получается можно обойтись одним счетчиком в 3 строчки кода...
0
|
||
| 15.09.2017, 22:21 | |
|
опять про потоки Про потоки Подскажите про потоки Вопрос про потоки вывода Объясните про потоки (stream) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|