|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
ViPRosХвост!!!!! Я показал 10 строк кода! Какой еще огород!!! ну огород с локами, я просто всегда думаю в контексте разработки, в которой участвует много людей, и с учётом того, что люди приходят/уходят, поэтому, да, огород :) а также скорее всего, получится организовать конвеер с очередью. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 16:50 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
ViPRosИ тут это самое главное - запустить параллельно те процессы, которые не претендуют на одни и те же ресурсы. Эти 5-10 строк кода полностью решают данную задачу. ну ок :) для обсуждения нужна была бы понятная, пусть упрощённая, но полная задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 16:51 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
hVosttа также скорее всего, получится организовать конвеер с очередью. с конвеером есть проблемы - не все процессы идут прямоточно есть процессы со сроками хранения продукции, с гарантийными сроками и т.д. и часто не укладываешься в эти сроки их приходится вернуть в очередь, вся цепочка уничтожается и идет перепланировка скорее всего можно что то придумать - в следующий раз переведу все в DataFlow (если доживу) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 16:55 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
hVosttViPRosИ тут это самое главное - запустить параллельно те процессы, которые не претендуют на одни и те же ресурсы. Эти 5-10 строк кода полностью решают данную задачу. ну ок :) для обсуждения нужна была бы понятная, пусть упрощённая, но полная задача. задача полная m работ n ресурсов …. - в постановка теории расписаний - т.е. самая упрощенная модель ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 16:57 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
hVostt, rx не вижу для него. У rx основа события извне. Причем асинхронные. А у него обсчёт вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 17:52 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
ViPRosDima Tпропущено... Я про lock (algroup). Эвенты ждутся после этого лока, а мониторы внутри. выделил нужные строкипропущено... Про блокировку AutoResetEvent.WaitAll() ничего не нашел, в хэлпе только про WaitOne() Ну все правильно ==> foreach (var e in monitorEventsObjects) Monitor.Enter(e); установили блокировку (только не для себя, мы не ждем эти события - мы их для других поставили) тут тоже для себя зеленая дорога (сигнал установлен в конструкторе), а после WaitAll двери захлопываются Я просил код где максимальная нагрузка, а ты старт-стоп показал, самое важное вырезал. Не хочешь обсуждать - твое право, но зачем так тролить? Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2018, 20:38 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
Dima TЯ просил код где максимальная нагрузка, а ты старт-стоп показал, самое важное вырезал. Не хочешь обсуждать - твое право, но зачем так тролить? Удачи. Да там обычный код вычислительный (создается множество производственных процессов для производственных структур, которые заблокированы как раз этими строчками и выбирается лучший процесс по заданному критерию при заданных ограничениях), ничего особенного (но объемом в несколько тыщ строк). Код этот очень быстрый и не требует оптимизации. Раньше однопоточная версию устраивала, так как процессов таких надо было выбрать 2-5 миллиона из 10-20. Теперь цифры выросли на порядок и мне надо как то все это вертикально масштабировать, потому решил и этот код распараллелить. А распараллеливание этого кода не всегда может быть эффективен. Допустим, если производственных мощностей мало и они универсальны, то все техпроцессы будут выполняться на любом из них (или все рабочие универсальны), тогда по любе алгоритм все процессы поставить в очередь это как многозадачность в однопроцессорной машине без IO). Тут распараллеливание только мешает. Потому самая сложная задача ФОРМИРОВАНИЕ этой очереди (фронта работ) для алгоритма планирования. Это похоже на выталкивание по приоритетам (которые вычисляются в зависимости от производственных структур, структуры работ и т.д. много параметров. Если коротко, то делается вот что. 1. Кто то разузловывает изделие/проект... (которые в производственных заказах специфированы), находить терминальные ДСЕ, выбирает все альтернативные ТП и из их терминальных (начальных) операций формирует очередь процессов (ТП) 2. Кто то анализирует эту очередь на совместимость по многим политикам - переналадки (упорядочение для минимизации) - динамические сборы (печи, гальваника, транспорт,...покраска сушка - совместная обработка) - технологические сборы (совместная обработка сопрягаемых поверхностей) -- и выкидывает в фронт работ (оттуда можно их брать для планирования - где будем делать, кто будет, на чем будет, когда будет,... куча ограничений) 3. Кто то эти работы параллельно (раньше был один поток и он успевал) планирует и если что то не так все начинается с п.2 4. После того как какое то изделие/заказ/проект/…. окончательно запланирован идет параллельно запись. Вот вся задача ооооочень коротоко. Мы обсуждали часть п.3., которую я переделал недавно. И я никого не троллил, а просто спросил кое что. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 01:44 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
ViPRos, Интересно, а человек в этом алгоритме участвует? Может он внести изменения в процессе, или только на конечном или начальном этапах? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 10:58 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
hVosttViPRos, Интересно, а человек в этом алгоритме участвует? Может он внести изменения в процессе, или только на конечном или начальном этапах? Человек управляет алгоритмом через политики, ограничения и параметры процессов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 12:25 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
ViPRos, То есть только на начальном этапе. Поправить "в середине" нельзя? Или исправить результат? Я понимаю, что это возможно вообще не требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 15:45 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
hVosttViPRos, То есть только на начальном этапе. Поправить "в середине" нельзя? Или исправить результат? Я понимаю, что это возможно вообще не требуется. Хвост! Там миллионы процессов генерируются (да хоть сотни), что ты там хочешь в интерактиве делать? Поправить всегда можно, после расчетов видны состояние заказов, указаны заказы с нарушениями директивных сроков и т.д. Если что то не устраивает, то можешь менять политики, ограничения, параметры и запустить перерасчет. А так делается по такой схеме. 1. Получили расписание. 2. Работаем и вводим факт. 3. На мониторе диспетчеров видны отклонения. Когда отклонения не влезают ни в какие ворота (что решает диспетчер или программа по заданным политикам - допустим отклонение в сутки - перерасчет автоматически) инициируется перерасчет. Перерасчет начинается локально (сначала внутри вышестоящего контекста - для РМ это допустим Участок, для Участка - Пролет, Цех и т.д.) и если можно отклонения компенсировать (т.е. планы других структурных элементов не затрагиваются), то перерасчет заканчивается) и идет эскалация до полной компенсации отклонений. В худшем случае (обычно когда выбраны неадекватные политики - допустим JIT) пересчитывается все расписание. Потому очень важна скорость расчетов. А так диспетчер может вручную переставить палки по своему усмотрению (основной режим работы всяких херовых ЕРП) - но я бы дал ему по башке за это. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:22 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
После первого расчета расписания получаются так называемые реперные точки (В ВИП.Производстве они называются "Устойчивые к перезапуску процессы". Если при перерасчете эти реперные точки смещены, то по идее я должен оповестить вышестоящие органы - владельцев этих процессов, но пока я это не сделал - нафиг никому ничего не надо. Это точки обычно - моменты отгрузки покупателю, моменты пополнения запасов (закупки, кооперация,...,), финансовые операции и т.д. вещи связанные с внешней логистикой. В принципе в серийном и массовом производстве после перерасчета расписание должна удалиться автоматически, оставив только реперные точки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 16:29 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
ViPRosКогда отклонения не влезают ни в какие ворота (что решает диспетчер или программа по заданным политикам - допустим отклонение в сутки - перерасчет автоматически) инициируется перерасчет. Ну отклонения понятно, а переносы? По времени, или использование освободившихся ресурсов. Такое. ViPRosА так диспетчер может вручную переставить палки по своему усмотрению (основной режим работы всяких херовых ЕРП) - но я бы дал ему по башке за это. Я же не знаю, какие у вас регламенты. Часто самые умные и отлаженные процессы не всегда работают в контексте "данного случая". В целом понятно. ViPRosЕсли при перерасчете эти реперные точки смещены, то по идее я должен оповестить вышестоящие органы - владельцев этих процессов, но пока я это не сделал - нафиг никому ничего не надо. А этот момент управляется только разработчиком? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 18:29 |
|
AutoResetEvent vs Monitor
|
|||
---|---|---|---|
#18+
hVosttViPRosЕсли при перерасчете эти реперные точки смещены, то по идее я должен оповестить вышестоящие органы - владельцев этих процессов, но пока я это не сделал - нафиг никому ничего не надо. А этот момент управляется только разработчиком? Все что я пишу - мое. От А до Я. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2018, 18:46 |
|
|
start [/forum/topic.php?fid=20&msg=39669043&tid=1399306]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 268ms |
0 / 0 |