Многопоточность. Универсальный «Менеджер потоков» 2.0

Публикация № 778905

Администрирование - Оптимизация БД (HighLoad)

"Фоновые задания" потоки "менеджер потоков" фоновых заданий" распараллелить  "восстановление партий"  многопоточность 

206
Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!
 
 Обновления
 
 Обновление "Менеджер потоков" 2.0.7

Изменения (возможно придется править события разработчика)

  •  Модуль "мпМенеджерПотоков", разделен на 4: "мпМенеджерПотоковОбщее", "мпОсновнаяПрограмма", "мпМенеджер", "мпПотоки";
  •  Процедуры и функции размещены в областях;
  •  параметр инициализации "КоличествоЭлементовКолекцииНаПоток" теперь располагается "СтруктураПараметров.ПараметрыИнициализации.КоличествоЭлементовКолекцииНаПоток" (Ранее располагался: "СтруктураПараметров.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.КоличествоЭлементовКолекцииНаПоток");
  •  параметр инициализации "ДинамическийРассчетКоличестваПотоков" теперь располагается "СтруктураПараметров.ПараметрыИнициализации.ДинамическийРассчетКоличестваПотоков" (Ранее располагался: "СтруктураПараметров.ПараметрыИнициализации.ПараметрыОбработкиКоллекции.ДинамическийРассчетКоличестваПотоков");
  •  параметр инициализации "РазрезМенеджеров" теперь называется "РазрезМенеджера";
  •  параметр инициализации "ПределКоличествоПопытокОбработатьОбъект" теперь называется "КоличествоПопытокОбработкиОбъекта".

 Исправленные ошибки:

  •  связанные с выводом сообщений пользователю;
  •  связанные с определением "АдресОчереди" при перезапуске потока.

Небольшая оптимизация:

  •  значение по умолчанию для параметра инициализации "КоличествоПопытокОбработкиОбъекта" = 1 (раньше было: 5);
  •  обработка по принудительной остановке "Менеджера потоков" входит в поставку;
 
 Обновление 12.03.2019
 
 Обновление "Менеджер потоков" 2.0.6
 
 Обновление "Менеджер потоков" 2.0.5
 
 Добавлена презентация с ISE 2018
 
 Другие статьи и разработки на данную тему:

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

Сразу договоримся, если в тексте будет указано «v1» - это отсылка к реализации в первой версии, если «v2» - к текущей.

 

Очень кратко, о чем речь…

Фреймворк в виде одного общего модуля, позволяющего при получении объектов на обработку запускать их в несколько потоков. Особенности:

  • Нет необходимости рассчитывать «порции» для обработки;
  • Нет необходимости организовывать файловый обмен между потоками;
  • Возможность запускать несколько менеджеров потоков одновременно, при этом потоки одного менеджера, могут запускать новые менеджеры со своими задачами и потоками;
  • Можно выстраивать граф зависимости объектов, что позволяет, например, избегать взаимоблокировок и/или организовать восстановление партий (на нашем предприятии удалось добиться 10х+ ускорения при 10 потоках в рабочее время – 200+ активных пользователей - Результаты работы механизма);
  • Все необходимые "вмешательство" в алгоритмы происходят с помощью событий;
  • Возможность описывать алгоритмы событий, как в модуле менеджера, так и в любом другом модуле БД (предпочтительно), а также во внешней обработке.
  • Автоматический рестарт потока в случае ошибок;
  • Контроль за количеством рестартов по каждому объекту;
  • Возможность получать «ответы» от потоков;
  • Возможность контролировать работу с помощью «Инструментов разработчика» или иных отчетов;
  • Возможность срочного прерывания работы;
  • И многое другое…

так было в «v1»

 

Основные изменения v2 (расширение функционала v1):

  • Только полная версия, полностью открытый код;
  • Практически полностью переписано ядро и архитектура (кода стало на ~50% больше), механизм обмена данными остался тот же (Хранилище общих настроек);
  • Появилось 3 способа обработки:
    • Обработка поэлементно:
      • Процедура ОбработатьОбъект(); (реализовано v1)
    • Обработка коллекций:
      • Процедура ОбработатьКоллекцию();
      • Процедура ДополнитьКоллекцию ().
  • Скорость обработки «зависимых» объектов происходит быстрее на 5-15% по сравнению с «v1», при выполнении одной и той же задачи;
  • Появилась возможность передавать в потоки произвольные единожды сформированные данные или рассчитывать их при запуске потока.
  • Возможность получать «ответ» об обработке объекта(ов) в «реальном времени» (в «v1» приходилось дополнительно прописывать обвязку из временного хранилища с помощью «СобытийРазработчика», откуда данные можно было получить только в конце обработки);
  • Сообщения выведенные в потоках, теперь выводятся автоматически (в «v1» приходилось обрабатывать через «Событиях разработчика»);
  • Расчет ресурсов теперь выполняют потоки;
  • Изменен состав «Событий разработчика»;
  • Изменена структура параметров передаваемых в «События разработчика»;
  • Граф теперь является одним объектом (в «v1» он состоял из нескольких не связанных объектов, что могло вызвать затруднения в понимании работы);
  • Расширены собираемые данные для анализа работы менеджера потоков (до 11 показателей);
  • Предоставлен шаблон функции «ОбработатьСобытиеРазработчика» для своих модулей;
  • В статью добавлены примеры;
  • Прочие мелочи.

Разработка проводилось на 1С:Предприятие 8.3 (8.3.9.1850) 32x; Режим совместимости 8.2.15

Теперь обо всем по порядку в деталях и с картинками...

 
 
 Архитектура
 
 Способы обработки
 
 
 Параметры инициализации
 
 События разработчика
 
 Мониторинг
 
 Примеры работы и выводы

 

Условия поставок:

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

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

Для возврата оплаты просто свяжитесь с нами.

206

Обработки

Наименование Файл Версия Размер
Обработка с примерами из статьи (для работы требуется "Менеджер потоков")
.epf 13,72Kb
13.09.19
49
.epf 13,72Kb 49 Скачать бесплатно

Менеджер потоков

Наименование Файл Версия Размер
Многопоточность. Универсальный «Менеджер потоков» 2.0
.zip 36,64Kb
13.09.19
91
.zip 2.0.7 36,64Kb 91 Скачать
12.09.2019
2.0.7 0 3000 руб.

Моментальная
доставка



Новый вопрос

E-mail*
Тема (вопрос)*

См. также

Специальные предложения