|
0 / 0 / 0
Регистрация: 25.06.2019
Сообщений: 5
|
|
Проблема с архитектурным решением25.06.2019, 11:56. Показов 2135. Ответов 8
Метки нет (Все метки)
Всем доброго дня.
Одолел меня проектный кретинизм. Не могу сообразить как лучше спроектировать приложение. Может есть тут светлые головы, которые подскажут как лучше реализовать. И так к сути. Дано: Есть очередь заданий с приоритетами. Задания 3 видов: Полное обновление (full), частичное обновление(part), и обновление сущности (incr). incr - основная работа, выполняется многопоточно, по мере поступления заданий (fulltime) full - должно выполняться в однопоточном режиме, при этом должно остановить запуск остальных заданий (incr и part). задание поступает раз в неделю. part - должно выполняться в однопоточном режиме, при этом должно остановить запуск остальных заданий (incr и full ). задание поступает раз в сутки. Обработку incr реализовал через Dataflow.ActionBlock. Как прикрутить грамотно full и part без костылей мне пока не понятно. Если подскажите в строну какого паттерна смотреть с вероятной реализацией, буду безмерно благодарен.
0
|
|
| 25.06.2019, 11:56 | |
|
Ответы с готовыми решениями:
8
Проблема с решением системы уравнений Проблема с решением системы дифференциальных уравнений первого порядка методом Адамса c++ c решением |
|
0 / 0 / 0
Регистрация: 25.06.2019
Сообщений: 5
|
|
| 25.06.2019, 12:48 [ТС] | |
|
Нет, сейчас ознакомлюсь. Благодарю
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 25.06.2019, 14:20 | |
|
Сергей Аноним, не полностью понятно по поводу приоритетов.
Допустим, в данный момент максимальное количество потоков одновременно обрабатывают несколько incr, при этом в очереди висит еще несколько incr, ожидая своей очереди на обработку, т.к. все рабочие потоки заняты. В этот момент прилетает full или part. Что происходит дальше? Сначала обрабатываются висящие в начале очереди incr или full/part прыгает в начало очереди? Если второе, то что делается с теми incr, которые уже были в очереди на момент поступления full/part? Они выбрасываются или обрабатываются потом, по окончании обработки full/part? Если выбрасываются, то какой приоритет у full и part относительно друг друга?
0
|
|
|
0 / 0 / 0
Регистрация: 25.06.2019
Сообщений: 5
|
|
| 25.06.2019, 14:33 [ТС] | |
|
Обработка заданий идет по приоритету (от большего к меньшему), в порядке поступления в очередь.
Т.е. incr может иметь больший приоритет чем full, и должен отработать раньше. Full и part должны дождаться обработки текущих incr. После обработки задания full или part запрашивается следующее задание.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 25.06.2019, 15:13 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 25.06.2019
Сообщений: 5
|
|
| 25.06.2019, 15:32 [ТС] | |
|
Приоритет учитывается только при выборке из очереди.
Далее задание запускается в работу. С incr все просто, просто добавить в Dataflow.ActionBlock. А вот с full и part сложнее, нужно дождаться и отработки ActionBlock и не запустить новые
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||||||||||||
| 25.06.2019, 16:29 | ||||||||||||||||
Сообщение было отмечено Сергей Аноним как решение
Решение
Сергей Аноним, если я правильно понимаю, то у вас где-то крутится поток, который вытягивает элементы из приоритетной очереди и добавляет их в ActionBlock.
Если это так, то вам надо при вытягивании full или part уведомить блок о завершении, дождаться этого завершения и выполнить работу в том же потоке. После чего тянуть следующий элемент и если он окажется incr, то создать заново блок. Как-то так, если предположить что метод ProcessQueue у вас обрабатывает очередь и очередь представлена классом BlockingCollection с приоритетной очередью как деталью реализации:
Кликните здесь для просмотра всего текста
Клавишами I, P, F добавляются соответствующие элементы в очередь. Реализация потокобезопасной приоритетной очереди взята из пакета ParallelExtensionsExtra ConcurrentPriorityQueue
1
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 25.06.2019
Сообщений: 5
|
|
| 25.06.2019, 17:45 [ТС] | |
|
Огромнейшее спасибо.
0
|
|
| 25.06.2019, 17:45 | |
|
Помогаю со студенческими работами здесь
9
Подскажите с решением помогите с решением Подскажите с решением. Загвоздка с решением. помгите с решением Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|