|
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
|
|||||||||||
Где и что я напутал с потоком23.03.2014, 20:41. Показов 2043. Ответов 36
Метки нет (Все метки)
Добрый день , сделал поток который просто переходит по ссылкам , что загружены в accounts , но вот где то я намудрил , и гет запрос идет только , сколько я поставил потоков, к примеру : ссылок загрузил 50 , а потоков поставил 30 , то гет запрос был произведен 31 раз .....
вот как вызываю :
что не так я сделал ? + в другом приложении анологичная проблема, только гет запросы идет чуть дольше , тобишь загрузил 1000 ссылок , поставил 100 потоков, а перешло всего 150-200 .... ну мнеб с этим разобраться ... жду ваших советов ибо сам не знаю ...
0
|
|||||||||||
| 23.03.2014, 20:41 | |
|
Ответы с готовыми решениями:
36
Где-то напутал с синтаксисом скрипта Что-то напутал с добавлением строки в базу( что то я событием напутал... а в чём именно??? |
|
17 / 17 / 3
Регистрация: 28.05.2013
Сообщений: 246
|
||
| 25.03.2014, 07:14 | ||
|
А проверки на свободность вспомогательного потока я так и не увидел. Добавлено через 11 минут Ладно. Представь такую ситуацию: есть командир (основной поток) и 10 солдат (вспомогательные потоки). Нужно выкопать 25 траншей. Что должен сделать командир, чтоб выкопать все 25 траншей? Он раздает по 1 заданию каждому солдату. Далее командир ходит кругами вокруг траншей, проверяет, не закончил ли данный солдат свое задание. Как только он обнаружил свободного отдыхающего солдата (Как так? Солдат, и отдыхает??? Непорядок!!!) командир дает солдату задание выкопать еще одну траншею. Если все 25 траншей уже выкопаны, то он отсылает этого солдата обратно в часть (выключает поток, освобождает память, занимаемую этим потоком). Вот по этому принципу и иди. По шагам делай. А чтоб большие куски, которые повторяются, не захламляли код -- выноси их в отдельные функции/процедуры и называй так, чтоб было понятно, что она делает. Тогда у тебя будет нормальный читабельный код. Больше я уже не знаю как объяснить.
0
|
||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 25.03.2014, 09:20 | ||
|
Доп.поток должен работать конкретно с той ссылкой, которая ему указана потоком-диспетчером (его роль можно возложить на осн.поток) параметром конструктора потока.
0
|
||
|
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
|
|
| 25.03.2014, 09:37 [ТС] | |
|
klaxwork, mss, может глупый вопрос, но я должен спросить , а что за дополнительный поток ? вот, например у меня поток procedure TStas.Execute; он является главным , так ? а дополнительный тогда что ? и как его создать ?
0
|
|
|
17 / 17 / 3
Регистрация: 28.05.2013
Сообщений: 246
|
|
| 25.03.2014, 09:51 | |
|
vuasya, как я уже говорил: этот поток у тебя должен быть основным (командиром).
Далее создаешь массив из дополнительных потоков (солдат). Основной только раздает задания дополнительным. А дополнительные уже выполняют всю грязную работу. Я уже не знаю как объяснять... Добавлено через 57 секунд Мда... Тут надо сознание распараллеливать, чтоб можно было представить, чем одновременно занимаются разные потоки...
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 25.03.2014, 09:57 | ||
|
А основной поток - это тот который создается при запуске приложения и в контексте которого работают твои формы.
0
|
||
|
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
|
|
| 25.03.2014, 10:39 [ТС] | |
|
mss, klaxwork, не серчайте =) мне просто надо было понять где главный и где дополнительный , тогда мне щас создать еще около 2 таки же потоков и просто давать им задания из моего так ? а дополнительные потоки мне делать тоже многопоточными ? просто ведь гл у меня многопоточный ...
0
|
|
|
17 / 17 / 3
Регистрация: 28.05.2013
Сообщений: 246
|
||
| 25.03.2014, 10:42 | ||
|
Есть еще один способ.
Без основного потока. Сделать массив с заданиями. И по очереди запустить все потоки. Каждый поток проходит по массиву с заданиями и ищет первое невзятое задание. Потом меняет флаг Ordered на True (чтоб остальные потоки его не взяли) и выполняет его. Как только завершает выполнение -- добавляет ответ в другой массив. Добавлено через 1 минуту Я так понял, что твой поток запускает сам себя. Т.е. происходит рекурсия. Как итог -- бесконечное создание множества бессмысленных потоков.
0
|
||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 25.03.2014, 10:52 | ||
|
Ведь абсолютное же непонимание тобой ключевых концепций ..
1
|
||
|
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
|
||||||
| 25.03.2014, 11:10 [ТС] | ||||||
|
бл* ребят, говоря потока я имел в виду не отдельный поток, а всю функцию Execute .... и читая , что вы пишите поток я думал про всю процедуру .... мда ... тогда вот что : так я же создал критическую секцию , и дал каждому потоку свой акк для выполнения
и потом каждый поток делает свой гет запрос HTTP.HTTPMethod('GET', accounts[CurAcc])
0
|
||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|||
| 25.03.2014, 11:39 | |||
|
Не по теме:
Добавлено через 5 минут За каким лешим твой поток полез в разделяемые между потоками ресурсы ?
0
|
|||
|
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
|
|
| 25.03.2014, 12:00 [ТС] | |
|
mss, но ведь тогда я могу точно знать , что 1 поток возьмет только 1 акк и не будет повторяться ...
0
|
|
|
17 / 17 / 3
Регистрация: 28.05.2013
Сообщений: 246
|
|
| 25.03.2014, 12:04 | |
|
mss, он действует по принципу "кто первый встал, того и тапки"...
![]() Т.е. поток берет аккаунт, берет соответствующий прокси и ими пользуется. Но у него я не обнаружил никакой проверки, не взял ли этот аккаунт с проксей какой-то другой поток... И никакой блокировки, чтоб эту пару (акк/прокси) не смог взять другой поток...
0
|
|
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 25.03.2014, 12:15 | ||
|
Поток-диспетчер должен сам распределять задания по доп.потокам. Передача задания - это передача фактическим параметром вызова подпрограммы, например, текстовой строки с URL. Ты первый раз в жизни слышишь про передачу параметров в подпрограмму ? Добавлено через 8 минут
0
|
||
|
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
|
||
| 25.03.2014, 13:37 [ТС] | ||
|
mss,
0
|
||
|
17 / 17 / 3
Регистрация: 28.05.2013
Сообщений: 246
|
|||||||
| 25.03.2014, 13:46 | |||||||
|
То ли у тебя begin-end цикла for не проставлены, то ли ты сразу после цикла счетчик ставишь на максимум...
Это просто количество запущенных потоков.
0
|
|||||||
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
||
| 25.03.2014, 14:28 | ||
|
Убедись сам - вот лишь малая подборка тем с этого ресурса, где в той или иной ипостаси фигурирует код, поразительно похожий по логике на приведенный тобой в этой теме. Я уже не говорю о Рунете в целом, куда (или откуда) эта "зараза" расползлась, в том числе и те самые "уроки". Добавлено через 27 минут vuasya, вот здесь я в столохматый раз уже разжевывал ту же самую тему)
0
|
||
| 25.03.2014, 14:28 | |
|
Что-то напутал в цикле, страшные слова в браузере показались Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. Где ошибка в коде при работе с потоком? Что не так с потоком? Интересно что происходит с потоком Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|