powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / нужны советы и идеи про потоки
17 сообщений из 17, страница 1 из 1
нужны советы и идеи про потоки
    #40085468
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет, есть у меня слушатель, который слушает задания, которые надо выполнять в определенные дни, часы и минуты.

и все вроде работает, но нагрузка последний год стала велика.
Ну и как складывается, все задания заказаны на одно и тоже время. Мои потоки все получают и запускают, соответственно все выполняется, но есть такая ситуация, что например к слушателю пришло 157 заданий на 9:15 минут, слушатель получает всё, но после 40-го это уже 9:16 минут и так далее, т.е. задания слушатель запускает на выполнение до 9:22,

я проблемы не вижу, но результат и время старта заданий пишется в базу, и пользователь не понимает, почему назначено на 9:15 а запустилось в 9:19.

я конечно могу обмануть пользователя и подсовывать время из задания, и я также почитал всякие книжки про потоки еще раз, в итоге все стандартно как бы, Repeat, Process. но он не успевает запустить всё в 9:15.

я думаю мысль понятна,

свой код не хочу показывать, так как он громоздкий с ремарками где есть имена заказчиков (чистить много) также он наложит некоторые стереотипы на обсуждение вопроса, ну и потом сразу начнутся ссылки на то, что нужно почитать то или то, но мне интересно мнение, и теоретические варианты решения, т.е. просто идеи, НЕЕЕЕ, конечно можно и технические решения, возможно они даже будут лучше моего, но результат боюсь будет тот же.

спасибо
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085487
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63я думаю мысль понятна

Мысль понятна. Непонятно какой жидкостью надо протирать хрустальный шар чтобы понять какой
бред ты наворотил, чтобы запуск сорока потоков занял целую минуту.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085497
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаешь пул потоков, например 500, на старте приложения и потом раскидываешь им задания.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085508
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
constructor TWorker.Create;
begin
  WriteToLog('Start Thread');
  inherited Create;
end;

procedure TWorker.Execute;
begin
  WriteToLog('Start Task');
  .......
end;

ну и присоединяюсь к вопросу
Dimitry Sibiryakov
Непонятно какой жидкостью надо протирать хрустальный шар чтобы понять какой бред ты наворотил, чтобы запуск сорока потоков занял целую минуту.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085576
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Создаешь пул потоков, например 500, на старте приложения и потом раскидываешь им задания.


Создание 500 потоков занимает несколько миллисекунд. Вряд ли пул чем-то поможет автору.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085580
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

Вероятно, поток, разбирающий очередь заданий, после запуска задания уходит в спячку на несколько секунд. Либо задания выполняются по очереди. Либо задания сильно грузят процессор, но в этом случае можно увеличить число ядер либо оптимизировать код задания.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085592
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да небось в БД пишется не время начала выполнения задания а время его завершения.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085597
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

yemets63я думаю мысль понятна

Мысль понятна. Непонятно какой жидкостью надо протирать хрустальный шар чтобы понять какой
бред ты наворотил, чтобы запуск сорока потоков занял целую минуту.

А если ещё учесть что хрустальные шары у всех от разных производителей, то вообще каюк!
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085624
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я так и не понял, в чем проблема ТС? Все задания должен рулить ОДИН доп.поток?
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085648
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запускай сотни потоков, пусть они начинают работать вовремя. А что закончат спустя час - это уже юзера не будет беспокоить
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085650
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
пришло 157 заданий на 9:15 минут, слушатель получает всё, но после 40-го это уже 9:16 минут и так далее, т.е. задания слушатель запускает на выполнение до 9:22
Запускать потоки на 7 минут раньше срока, чтобы успеть, уже предлагали?
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085696
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автор или запускает задания последовательно, и те выполняются в той же нити, или запускает задания в других нитях, но при этом чего-то ждет (например, инициализации, а то и завершения).
Забаньте его к буям, пожалуйста, чтобы не задавал тупых вопросов без предоставления кода.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085745
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
я думаю мысль понятна

Не понятно даже, чего ты хочешь. Ты описал довольно глупую ситуацию, свидетельствующую о явных проблемах на уровне архитектуры и кода. И? В чём вопрос-то? Где прописать волшебный параметр fast = true?

P.S. Там, где большая нагрузка, задания специально размазываются по времени запуска. Это позволяет обходиться без пиковых нагрузок, снижающих пропускную способность в целом. То есть на уровне требований можно и нужно прописать, что если задание запланировано на 9:15 - на практике оно будет выполнено между 9:10 и 9:20. Далее, задания часто требуется делить на несколько классов с разной приоритетностью и выбирать очередное на выполнение в соответствии - то есть одно можно выполнить между 9:00 и 9:30, другое обязательно нужно выполнить между 9:00 и 9:05, а третье вообще-то годится между 8:00 и 9:00, но сейчас уже 8:58, так что надо всё бросать и заниматься именно им.

P.P.S. Эффективность выполнения группы заданий существенно зависит от эффективности реализации каждого конкретного задания. Также она существенно зависит от того, насколько эти задания обращаются к общим ресурсам и насколько эффективно синхронизируется этот общий доступ. Как правило, наиболее эффективный подход - запускать N потоков-исполнителей, каждый из которых, выполнив очередное задание, берёт из очереди следующее и работает с ним. Количество N в целом подбирается экспериментально.

P.P.P.S. При очень большом количестве заданий бывает, что узким местом становится очередь заданий (потоки начинают ждать возможности вытащить из неё очередное задание). Тогда приходится делать свои очереди заданий для каждого потока и отдельный диспетчер, занимающийся распихиванием приходящих заданий по очередям исполнителей.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085890
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дааааааааааа,
на сколько меняется мир.

текст мой с указанием времени и количества заданий был вреден чтобы было понятно.
я думал, что кто то закинет идеи, но получил в ответ почти оскорбления.

все отрабатывается в милисекундах на самом деле, вопрос шел о проблеме запуска заданий, а не о их выполнениях, они все выполняются скажем так почти одновременно

только от Softwarer подмечено верно, а я это не указал.
вся проблема, что поток иногда, именно иногда, начинает чего то ждать, скажем так 50 на 50, запускает или ждет, и не могу понять закономерности, соответственно не могу найти причину. даже при трейсинге, приходит на ProcessMassage и там курсор стоит иногда несколько секунд, не всегда ..

Судя по первым отзывам, Модератор может удалить тему. дальше развития не будет.
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085907
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63на сколько меняется мир.

Мир меняется - люди остаются прежними. Ты, вот, так и не научился программировать за все года, что сидишь здесь.

yemets63приходит на ProcessMassage и там курсор стоит иногда несколько секунд

Какой ещё ProcessMessages в потоке? Его там не должно быть по определению, что только подтверждает диагноз в начале топика.

Ты всерьёз думал, что тебя закидают идеями с твоим подземным стуком?..
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40085914
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
я думал, что кто то закинет идеи

твои текущие идеи трудно понять. Не называть же поток сознания в стартовом посте идеей? :)
...
Рейтинг: 0 / 0
нужны советы и идеи про потоки
    #40086139
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63
приходит на ProcessMassage и там курсор стоит иногда несколько секунд, не всегда ..

Если еще добавить сюда SYNCHRONIZE (как делают почти все новички в потоках), то если не глюки, то тормоза обязаны быть с таким количеством потоков.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / нужны советы и идеи про потоки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]