Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4]      все
 Re: AutoResetEvent vs Monitor  [new]
hVostt
Member

Откуда:
Сообщений: 16272
ViPRos
Хвост!!!!!
Я показал 10 строк кода! Какой еще огород!!!


ну огород с локами, я просто всегда думаю в контексте разработки, в которой участвует много людей, и с учётом того, что люди приходят/уходят, поэтому, да, огород :)

а также скорее всего, получится организовать конвеер с очередью.
3 июл 18, 16:50    [21539881]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
hVostt
Member

Откуда:
Сообщений: 16272
ViPRos
И тут это самое главное - запустить параллельно те процессы, которые не претендуют на одни и те же ресурсы.
Эти 5-10 строк кода полностью решают данную задачу.


ну ок :) для обсуждения нужна была бы понятная, пусть упрощённая, но полная задача.
3 июл 18, 16:51    [21539887]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
hVostt
а также скорее всего, получится организовать конвеер с очередью.

с конвеером есть проблемы - не все процессы идут прямоточно
есть процессы со сроками хранения продукции, с гарантийными сроками и т.д. и часто не укладываешься в эти сроки
их приходится вернуть в очередь, вся цепочка уничтожается и идет перепланировка
скорее всего можно что то придумать - в следующий раз переведу все в DataFlow (если доживу)
3 июл 18, 16:55    [21539904]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
hVostt
ViPRos
И тут это самое главное - запустить параллельно те процессы, которые не претендуют на одни и те же ресурсы.
Эти 5-10 строк кода полностью решают данную задачу.


ну ок :) для обсуждения нужна была бы понятная, пусть упрощённая, но полная задача.

задача полная m работ n ресурсов …. - в постановка теории расписаний - т.е. самая упрощенная модель
3 июл 18, 16:57    [21539913]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
hVostt,
rx не вижу для него.
У rx основа события извне. Причем асинхронные.
А у него обсчёт вариантов.
3 июл 18, 17:52    [21540127]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
Dima T
Member

Откуда:
Сообщений: 14160
ViPRos
Dima T
пропущено...

Я про lock (algroup). Эвенты ждутся после этого лока, а мониторы внутри.
+ выделил нужные строки
пропущено...

Про блокировку AutoResetEvent.WaitAll() ничего не нашел, в хэлпе только про WaitOne()


Ну все правильно
==> foreach (var e in monitorEventsObjects) Monitor.Enter(e);
установили блокировку (только не для себя, мы не ждем эти события - мы их для других поставили)

тут тоже для себя зеленая дорога (сигнал установлен в конструкторе), а после WaitAll двери захлопываются

Я просил код где максимальная нагрузка, а ты старт-стоп показал, самое важное вырезал. Не хочешь обсуждать - твое право, но зачем так тролить? Удачи.
3 июл 18, 20:38    [21540507]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
Dima T
Я просил код где максимальная нагрузка, а ты старт-стоп показал, самое важное вырезал. Не хочешь обсуждать - твое право, но зачем так тролить? Удачи.

Да там обычный код вычислительный (создается множество производственных процессов для производственных структур, которые заблокированы как раз этими строчками и выбирается лучший процесс по заданному критерию при заданных ограничениях), ничего особенного (но объемом в несколько тыщ строк). Код этот очень быстрый и не требует оптимизации. Раньше однопоточная версию устраивала, так как процессов таких надо было выбрать 2-5 миллиона из 10-20. Теперь цифры выросли на порядок и мне надо как то все это вертикально масштабировать, потому решил и этот код распараллелить.
А распараллеливание этого кода не всегда может быть эффективен. Допустим, если производственных мощностей мало и они универсальны, то все техпроцессы будут выполняться на любом из них (или все рабочие универсальны), тогда по любе алгоритм все процессы поставить в очередь это как многозадачность в однопроцессорной машине без IO). Тут распараллеливание только мешает.
Потому самая сложная задача ФОРМИРОВАНИЕ этой очереди (фронта работ) для алгоритма планирования. Это похоже на выталкивание по приоритетам (которые вычисляются в зависимости от производственных структур, структуры работ и т.д. много параметров.
Если коротко, то делается вот что.
1. Кто то разузловывает изделие/проект... (которые в производственных заказах специфированы), находить терминальные ДСЕ, выбирает все альтернативные ТП и из их терминальных (начальных) операций формирует очередь процессов (ТП)
2. Кто то анализирует эту очередь на совместимость по многим политикам
- переналадки (упорядочение для минимизации)
- динамические сборы (печи, гальваника, транспорт,...покраска сушка - совместная обработка)
- технологические сборы (совместная обработка сопрягаемых поверхностей)
--
и выкидывает в фронт работ (оттуда можно их брать для планирования - где будем делать, кто будет, на чем будет, когда будет,... куча ограничений)
3. Кто то эти работы параллельно (раньше был один поток и он успевал) планирует и если что то не так все начинается с п.2
4. После того как какое то изделие/заказ/проект/…. окончательно запланирован идет параллельно запись.

Вот вся задача ооооочень коротоко.
Мы обсуждали часть п.3., которую я переделал недавно.

И я никого не троллил, а просто спросил кое что.
4 июл 18, 01:44    [21541121]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
hVostt
Member

Откуда:
Сообщений: 16272
ViPRos,

Интересно, а человек в этом алгоритме участвует? Может он внести изменения в процессе, или только на конечном или начальном этапах?
4 июл 18, 10:58    [21541755]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
hVostt
ViPRos,

Интересно, а человек в этом алгоритме участвует? Может он внести изменения в процессе, или только на конечном или начальном этапах?


Человек управляет алгоритмом через политики, ограничения и параметры процессов.

К сообщению приложен файл. Размер - 57Kb
4 июл 18, 12:25    [21542143]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
hVostt
Member

Откуда:
Сообщений: 16272
ViPRos,

То есть только на начальном этапе. Поправить "в середине" нельзя? Или исправить результат? Я понимаю, что это возможно вообще не требуется.
4 июл 18, 15:45    [21543055]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
hVostt
ViPRos,

То есть только на начальном этапе. Поправить "в середине" нельзя? Или исправить результат? Я понимаю, что это возможно вообще не требуется.


Хвост! Там миллионы процессов генерируются (да хоть сотни), что ты там хочешь в интерактиве делать?
Поправить всегда можно, после расчетов видны состояние заказов, указаны заказы с нарушениями директивных сроков и т.д.
Если что то не устраивает, то можешь менять политики, ограничения, параметры и запустить перерасчет.
А так делается по такой схеме.
1. Получили расписание.
2. Работаем и вводим факт.
3. На мониторе диспетчеров видны отклонения.
Когда отклонения не влезают ни в какие ворота (что решает диспетчер или программа по заданным политикам - допустим отклонение в сутки - перерасчет автоматически) инициируется перерасчет.
Перерасчет начинается локально (сначала внутри вышестоящего контекста - для РМ это допустим Участок, для Участка - Пролет, Цех и т.д.) и если можно отклонения компенсировать (т.е. планы других структурных элементов не затрагиваются), то перерасчет заканчивается) и идет эскалация до полной компенсации отклонений. В худшем случае (обычно когда выбраны неадекватные политики - допустим JIT) пересчитывается все расписание.
Потому очень важна скорость расчетов.
А так диспетчер может вручную переставить палки по своему усмотрению (основной режим работы всяких херовых ЕРП) - но я бы дал ему по башке за это.
4 июл 18, 16:22    [21543272]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
После первого расчета расписания получаются так называемые реперные точки (В ВИП.Производстве они называются "Устойчивые к перезапуску процессы". Если при перерасчете эти реперные точки смещены, то по идее я должен оповестить вышестоящие органы - владельцев этих процессов, но пока я это не сделал - нафиг никому ничего не надо.
Это точки обычно - моменты отгрузки покупателю, моменты пополнения запасов (закупки, кооперация,...,), финансовые операции и т.д. вещи связанные с внешней логистикой.
В принципе в серийном и массовом производстве после перерасчета расписание должна удалиться автоматически, оставив только реперные точки.
4 июл 18, 16:29    [21543300]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
hVostt
Member

Откуда:
Сообщений: 16272
ViPRos
Когда отклонения не влезают ни в какие ворота (что решает диспетчер или программа по заданным политикам - допустим отклонение в сутки - перерасчет автоматически) инициируется перерасчет.


Ну отклонения понятно, а переносы? По времени, или использование освободившихся ресурсов. Такое.


ViPRos
А так диспетчер может вручную переставить палки по своему усмотрению (основной режим работы всяких херовых ЕРП) - но я бы дал ему по башке за это.


Я же не знаю, какие у вас регламенты. Часто самые умные и отлаженные процессы не всегда работают в контексте "данного случая".

В целом понятно.


ViPRos
Если при перерасчете эти реперные точки смещены, то по идее я должен оповестить вышестоящие органы - владельцев этих процессов, но пока я это не сделал - нафиг никому ничего не надо.


А этот момент управляется только разработчиком?
4 июл 18, 18:29    [21543828]     Ответить | Цитировать Сообщить модератору
 Re: AutoResetEvent vs Monitor  [new]
ViPRos
Member

Откуда:
Сообщений: 9659
hVostt
ViPRos
Если при перерасчете эти реперные точки смещены, то по идее я должен оповестить вышестоящие органы - владельцев этих процессов, но пока я это не сделал - нафиг никому ничего не надо.


А этот момент управляется только разработчиком?


Все что я пишу - мое. От А до Я.
4 июл 18, 18:46    [21543868]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4]      все
Все форумы / WinForms, .Net Framework Ответить