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































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

 Обновления

 

 Обновление "Менеджер потоков" 2.0.7

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

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

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

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

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

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

 Обновление 12.03.2024

 

 Обновление "Менеджер потоков" 2.0.6

 

 Обновление "Менеджер потоков" 2.0.5

 

 Добавлена презентация с ISE 2024

 

 Другие статьи и разработки на данную тему:

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

Сразу договоримся, если в тексте будет указано «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-ти дней со дня поступления денег на наш счет.

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

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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *