Многопоточный конвейер (MTP / Multi-threaded pipeline)

20.10.26

Разработка - Инструментарий разработчика

Решение, которое позволяет быстро организовать многопоточную обработку данных. Легко встраивается в любую конфигурацию 1С без доработок. Проверено на крупнейших HighLoad проектах федерального масштаба. Открытый код, Open Source проект на GitHub.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
mtp-v3.0.0.4.cf
.cf 470,34Kb ver:v3.0.0.4
54 Скачать бесплатно
mtp-v3.0.0.4.cfe
.cfe 444,66Kb ver:v3.0.0.4
9 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Содержание:

  • Многопоточный конвейер
  • Назначение
    • Распараллеливание вычислений
    • Асинхронная обработка данных
    • Внутренние очереди в 1С
  • Почему МТР
  • Проверенное решение
  • Как начать

 

Многопоточный конвейер (MTP / Multi-threaded pipeline)

За годы работы в 1С мне посчастливилось принять участие в проектировании и запуске в эксплуатацию нескольких высоконагруженных систем. На каждом из проектов внедрения приходилось решать схожие задачи по разработке удобных инструментов для упрощения процесса разработки и повышения производительности 1С.

Мы активно использовали фоновые задания, но сталкивались с одной и той же рутиной: нужно следить за потоками, их ошибками и зависаниями, писать систему логирования. Решать, как перезапустить выполнение большой задачи, если процесс прервался на середине и часть данных уже обработана.

Для решения этих задач был разработан Многопоточный конвейер (MTP / Multi-threaded pipeline) - встраиваемый фреймворк, который берет на себя всю работу по управлению многопоточной и асинхронной обработкой внутри 1С.

 

Назначение

Многопоточный конвейер предназначен для решения трех фундаментальных задач:

  1. Параллельные вычисления.
    Увеличение производительности высоконагруженных систем за счет отказоустойчивой многопоточной обработки данных.
  2. Асинхронная обработка.
    Механика отложенного фонового исполнения заданий, повышение скорости работы интерфейса пользователя.
  3. Внутренние очереди в 1С.
    Реализация в 1С классической концепции Internal Message Queue. Стабилизация нагрузки на систему.

 

Распараллеливание вычислений

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

📌 Кейс
Выполнить ресурсоемкую операцию над тысячами объектов.

🛠 Стандартный подход
Обработать объекты в цикле. Решение задачи в один поток занимает часы. При возникновении ошибки на середине процесса приходится начинать всё сначала или писать сложную логику продолжения.

🔥 Решение c MTP
Создание в цикле задания на многопоточную обработку. Каждое такое задание - это Пакет данных. Многопоточный конвейер обработает созданные Пакеты данных множеством параллельных фоновых заданий.

👍 Результат

  • Производительность: кратное сокращение времени обработки.
  • Отказоустойчивость: авто-контроль работы фоновых заданий, повторная обработка.
  • Изоляция ошибок: ошибка обработки одного Пакета данных не влияет на остальные.
  • Легко продолжить после ошибки: вы исправляете код обработчика и перезапускаете только те пакеты, которые завершились со статусом «Ошибка».

 

Асинхронная обработка данных

Многопоточный конвейер используется для решения задач асинхронного запуска фоновых процессов обработки данных при наступлении определенных событий.

📌 Кейс
Пользователь записывает документ, после чего должна выполниться тяжелая операция (обновиться итоговая таблица или вызваться внешний API).

🛠 Стандартный подход**
После записи документа выполнить действие в сеансе пользователя. Синхронное выполнение блокирует интерфейс (вызывает его зависание). При одновременной работе нескольких пользователей возникают ошибки взаимоблокировки.

🔥 Решение c MTP
При записи документа создаем задание на асинхронную обработку - Пакет данных. Создание пакета - легкая процедура, не вызывающая взаимоблокировок или подвисаний интерфейса. Созданные пакеты обрабатываются многопоточным конвейером в фоне.

👍 Результат

  • Комфорт пользователя: пользователь продолжает работу мгновенно, не получает сообщений об ошибках.
  • Обход ошибок: механика повторной обработки пакетов штатно решает проблемы взаимоблокировок, недоступности сторонних сервисов.
  • Надежность: Пакеты данных будут гарантированно обработаны во множество потоков, даже если возникнет аварийная ситуация на СУБД или кластере 1С.

 

Внутренние очереди в 1С

Многопоточный конвейер реализует классическую механику внутренних очередей (Internal Message Queue), широко используемую при создании модулей на других языках программирования.

В высоконагруженных системах частой задачей является стабилизация нагрузки на систему. Необходимо, чтобы определенная механика не заняла всю вычислительную мощность связки кластер 1С / СУБД, так как это может привести всю систему в неработоспособное состояние. Необходимо уметь сглаживать пиковые нагрузки.

Наиболее распространённые примеры стабилизации "рваной" нагрузки на 1С при помощи многопоточного конвейера:

  • Экранирование запросов по API
  • Работа с брокерами сообщений RabbitMQ/Kafka

 

Экранирования запросов по API

📌 Кейс
В 1С опубликована API для получения данных по запросу. Есть сторонний модуль, который может вызывать это API с различной частотой.

🛠 Стандартный подход
Формирование ответа на запрос и его отправка в момент обращения к API.

😞 Почему стандартное решение не подходит
Синхронная обработка 5-10 одновременных запросов вполне приемлемый вариант. Однако когда сторонний модуль одновременно совершает 1000 запросов приводит к зависанию 1С. По сути база данных не управляет своей загрузкой. Сторонний модуль определяет на сколько загрузить 1С своими запросами. При этом он не обладает информацией о приемлемом режиме работы 1С.

👍 Решение c MTP
При получении запроса создавать задание на отправку результата - Пакет данных. В Способе обработки пакетов мы фиксируем, что обработка должна идти не более чем в 5 потоков. Такой подход стабилизирует систему:

  • Быстрый прием.
    Создание пакета - легкая операция, которая не вызовет критической нагрузки на 1С, даже при высокой частоте запросов.
  • Лимитирование нагрузки.
    Сколько бы не накопилось Пакетов в состоянии "К обработке", их обработка будет идти не более чем в 5 потоков. Система отработает все задания в том темпе, в котором она может это делать без ущерба для смежных процессов.

 

Работа с брокерами сообщений RabbitMQ/Kafka

📌 Кейс
1C получает данные по шине. Публикация объектов для 1С производится с различной частотой.

🛠 Стандартный подход
Сериализация объектов при чтении JSON объектов с шины данных.

😞 Почему стандартное решение не подходит
Массовая публикация объектов может привести 1С или брокер сообщений в неработоспособное состояние:

  • Быстрая вычитка сообщений с шины приведет к неработоспособности 1С, т.к. она не справится загрузкой сериализации.
  • Ограничение скорости чтения с шины под производительность 1С приведет к накоплению в очереди большого объема данных, а это в свою очередь приведет к деградации брокер сообщений.

👍 Решение MTP
При чтении входящих сообщений c шины, полученные объекты сериализовать не сразу, а складывать в Пакеты данных (данные пакетов - JSON объекта с шины). Непосредственную сериализацию производить при обработке Пакетов данных в предсказуемом темпе.

  • Быстрое чтение шины.
    Вычитка данных с шины происходит очень быстро, так как она лимитирована только скоростью записи Пакетов данных. Быстрое вычитывание очереди с бокера сообщений позволяет снизить нагрузку на сам брокер. Зачастую брокер сообщений - это InMemory база данных, а значит скорость чтения косвенно уменьшает объемы потребляемой брокером оперативной памяти.
  • Удобство отладки.
    Такой подход предоставляет максимальный комфорт отладки обменов. Ошибка сериализации одного объекта не тормозит весь процесс. Пакет данных в состоянии "Ошибка" легко можно повторно обработать, после исправления кода обработчика пакетов.

 

Почему MTP

👍 Производительность
Полная утилизация ресурсов кластера 1С и СУБД. Кратный рост производительности за счет параллелизма выполнения операций.

👍 Надежность
Автоматический контроль работы фоновых заданий. Механика повторной обработки Пакетов данных при ошибках блокировки или аварийных ситуациях на сервере 1С.

👍 Удобство
Настройка многопоточной обработки в интерфейсе. Автоматическое логирование процесса обработки данных. Инструменты для групповой обработки произвольных данных.

👍 Простота внедрения
Распространяется в виде комплекта поставки с поддержкой поставщика. Вам не нужно менять структуру вашей базы — MTP встраивается как подсистема в любую базу данных 1С без необходимости её доработки.

 

Проверенное решение

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

В компании СДЭК многопоточный конвейер - это ключевой инструмент. Он встроен во все базы данных на платформе 1С (~20 штук). Его использование - это внутренний стандарт разработки.

На базе MTP в СДЭК реализованы различные механики, переведенные в многопоточный режим:

  • Сериализация объектов, полученных с шины данных RabbitMQ (реализация внутренних очередей в 1С).
  • Восстановление последовательностей взаиморасчетов (в регламентированном и управленческом учетах).
  • Обмены между системами 1С с использованием КД2.
  • Многопоточная трансляция данных оперативного/регламентированного учета в управленческий учет и МСФО.

Широчайшее применение многопоточный конвейер получил при реализации сложной бизнес-логики:

  • Формирование актов и отправка их клиентам (на почту, в ЭДО).
  • Процедуры закрытия периодов расчетов в оперативном и регламентированном учете.
  • Взаимодействия с внешними сервисами.

На базе многопоточного конвейера построены две биллинговые платформы СДЭК, обрабатывающие колоссальные объемы данных. Об этом я подробнее рассказывал в докладе на INFOSTART TEAM EVENT 2026.

 

С чего начать

Конфигурация имеет открытый исходный код и распространяется бесплатно по лицензии MIT. Исходный код конфигурации опубликован на GitHub.

📌 Документация: все подробности настройки, описание интерфейса и примеры кода доступны в Wiki проекта на GitHub.
📌 Релизы: готовый дистрибутив можно скачать в разделе Releases.
📌 Обратная связь: если вы нашли баг или хотите предложить улучшение — заводите задачу на GitHub.

Вступайте в нашу телеграмм-группу Инфостарт

Многопоточный конвейер MTP Multi-threaded pipeline HighLoad Пакеты данных

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13338    115    0    

78

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    83209    432    171    

362

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    285579    1606    423    

1220

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    16721    63    62    

73

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    44154    122    54    

135

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    76811    147    41    

154

Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.

18300 руб.

11.09.2026    3700    5    0    

10

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    28714    103    46    

107
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. n_mezentsev 175 26.09.26 19:28 Сейчас в теме
Неплохой конвейер, но я так понимаю, он ориентирован на быстро поступающие пакеты данных, а что если набор пакетов определен заранее и он очень большой (у меня первый опыт работы с многопоточностью как раз с регламентным заданием, которое не успевало в технологическое окно и начинало мешать работе пользователей), как будет работать механизм? Каждое управляющее задание будет выбирать ВСЕ порции или оно их выбирает по несколько для текущего запуска: не хотелось бы постоянно таскать столько данных с СУБД. Наверное, увеличение времени жизни УФЗ поможет, но все же интересно
2. _ASZ_ 232 27.09.26 06:14 Сейчас в теме
(1) Объем порций, которые выбирает каждое Управляющее задание настраивается в Способе обработки пакетов. В нем есть параметр Количество пакетов на управляющее ФЗ. Если ожидается, что за время жизни Управляющего ФЗ будет обработано, к примеру, 300 пакетов из миллиона, то можно указать значение 500 (с запасом) и не выбирать каждый раз миллион. Таким образом не создается избыточной нагрузки на систему при старте Управляющего ФЗ.

Ситуация, которую вы описываете, 1 в 1 разобрана в статье Основные настройки в Wiki проекта. Там же приведен пример настройки.
zig31; mikhailov_ap; n_mezentsev; +3 – Ответить
3. Kate_L 28.09.26 09:30 Сейчас в теме
Инструмент выглядит зрелым и востребованным. Спасибо автору за то, что поделился наработкой бесплатно. Такие вещи экономят недели разработки и, что важнее, нервы в продакшене.
4. GritNi 28.09.26 09:38 Сейчас в теме
Проект зрелый и продуманный.

Интересуют детали:
Какие накладные расходы на СУБД от ведения внутренней очереди?
Сложность отладки при «зависании» пакетов в состоянии «Выполняется»?
Есть ли конфликты с существующими механизмами фоновых заданий (БСП)?
6. _ASZ_ 232 28.09.26 10:22 Сейчас в теме
(4)
Какие накладные расходы на СУБД от ведения внутренней очереди?

В основе механики лежит работа с независимыми РС с одним измерением примитивного типа (индексная нагрузка минимальная). Запись в эти сервисные регистры происходит дважды: один раз при старте обработки пакета, второй раз при фиксации результата обработки. Среднее время на запись данных - менее 100мс, при этом запись организована так, что ошибки взаимоблокировок исключены. При оптимальном времени работы рабочего ФЗ - несколько секунд, накладные расходы - значительно менее 0,1%. Естественно это приблизительная оценка, в различных ситуациях могут быть отклонения.

Сложность отладки при «зависании» пакетов в состоянии «Выполняется»

"Зависшие" пакеты автоматически скидываются системой в состояние Ошибка (при исключении в коде, по таймауту, при анализе лога кластера, ...). Ошибочные пакеты могут быть отлажены в сеансе пользователя. В этом одна из сильных сторон Многопоточного конвейера, удобная отладка изолированных ошибок, возникших в фоновых заданиях - делается это максимально просто.

Есть ли конфликты с существующими механизмами фоновых заданий (БСП)?

Многопоточный конвейер никаким образом не пересекается с механизмом фоновых заданий БСП. Взаимного влияния нет.
7. GritNi 28.09.26 12:52 Сейчас в теме
(6)
Сложность отладки при «зависании» пакетов в состоянии «Выполняется»

"Зависшие" пакеты автоматически скидываются системой в состояние Ошибка (при исключении в коде, по таймауту, при анализе лога кластера, ...). Ошибочные пакеты могут быть отлажены в сеансе пользователя. В этом одна из сильных сторон Многопоточного конвейера, удобная отладка изолированных ошибок, возникших в фоновых заданиях - делается это максимально просто.


Что произойдёт, если фоновое задание упадёт на середине обработки большой задачи?
11. _ASZ_ 232 29.09.26 09:55 Сейчас в теме
(7) Только те пакеты данных, обработка которых вызывает ошибку, будут переведены в соответствующее состояние. Остальные пакеты будут обработаны. Разработчик исправляет алгоритм обработки пакетов и запускает повторную обработку только пакетов с ошибками.

По сути область ошибки изолируется и обрабатывается повторно. Об этом также можно прочитать в Wiki проекта в статье Повторная обработка пакетов.
n_mezentsev; +1 – Ответить
5. Alks_3 28.09.26 09:40 Сейчас в теме
💪🏻
Серьезный механизм
Спасибо автору за то, что делишься своей работой на безвозмездной основе
8. GritNi 28.09.26 12:56 Сейчас в теме
Как MTP защищает систему от перегрузки, когда внешний источник начинает «заваливать» 1С запросами?
9. Darya_go 28.09.26 14:35 Сейчас в теме
Пользуюсь MTP уже не первый год — удобный и продуманный инструмент, незаменимая вещь в разработке: экономит кучу времени, закрывает самые разные задачи, при этом достаточно простой в эксплуатации. Приятно порадовало, что теперь поддерживается режим интерфейса 8.5.
Александр, спасибо за качественный продукт, и за то, что делаешь 1С-ный мир чуточку лучше.
10. LevLeopold 28.09.26 15:01 Сейчас в теме
Классная реализация
Не требует менять структуру базы, т.е. внедрение проще как я понял
Вижу что и есть проблемы с зависанием из‑за API при массовых публикациях и как MTP их решает
Очень понравилась идея с пакетами данных и тем, что ошибка в одном пакете не ломает остальные, это прям сильно упрощает отладку и отказоустойчивость
Короче круто, нужно будет опробовать
12. Bizzz 05.10.26 06:15 Сейчас в теме
Это решение, на которое нужно обязательно обратить внимание, как только компания вырастает до "больше одной баз 1С, больше одного сервиса...".
Пользуюсь инструментом начиная с момента первой публикации https://infostart.ru/1c/tools/947222. Помимо его основного назначения, многопоточной обработки данных, это просто очень удобно. Любую асинхронную обработку заворачиваю на пакеты. Это работа и с API различных сервисов, работа с шиной RabbitMQ, чат-ботами, и даже просто что-то временно залогировать в пакеты на период отладки бизнес-процессов. В пакет можно записать любой необходимый набор данных, при обработке зафиксировать результат с максимально детальным контекстом, обработать вручную в режиме отладки. Хорошая визуализация позволяет оперативно видеть статус обработки и косвенно понимать состояние системы в целом. Решение очень гибкое, полностью самодостаточное, легко встраивается в любую конфигурацию.
Спасибо Александру за эту разработку!
Rustam10; _ASZ_; +2 – Ответить
13. n_mezentsev 175 16.10.26 06:14 Сейчас в теме
Подскажите, а для синхронной обработки его можно как-то использовать? Имею ввиду программный запуск пакета в обработку. Например, для заполнения задания на производство полуфабрикатов нужно разузловать строки задания по конечной продукции. Это можно сделать с помощью конвейера, но как получить результат здесь и сейчас - по нажатию кнопки - секунд за 7 вместо 40 за счет разделения на потоки?
14. _ASZ_ 232 16.10.26 07:35 Сейчас в теме
(13) Обработать пакет синхронно можно. Для этого нужно вызвать функцию ум_ПакетыДанных.ОбработатьПакетДанныхВСеансеПользователя(ИдентификаторПакета). В качестве параметра передается идентификатор созданного ранее пакета. Такая возможность реализована для того, чтобы использовать возможности конвейера для логирования обработки синхронных обработчиков. Но обработка пакета будет произведена в текущем сеансе в 1 поток.

Если нужно форсировать многопоточную обработку, то после создания пакетов лучше вызвать функцию ум_ПакетыДанныхОбработка.ОбработатьПакетыДанных(СпособОбработкиДляЗапуска). В качестве параметра - передаем ссылку на способ обработки пакетов. Однако здесь нужно учитывать тот момент, что если по этому способу обработки уже работает управляющее фоновое задание (запущено механикой конвейера, или при вызове этого метода вручную), то новое управляющее ФЗ запущено не будет. Уже запущенное ранее управляющее ФЗ сперва обработает пакеты, отобранные им при старте ранее. Только что созданные пакеты будут подхвачены следующим управляющем ФЗ, которое будет запущено конвейером автоматически, когда завершит работу предыдущее. Таким образом гарантировать, что запуск этого метода "подхватит" созданные пакеты сразу - нельзя.

Учитывая все вышесказанное правильный путь реализации следующий:
1. Выполнили действие, создали пакеты данных, получили их идентификаторы.
2. Вызвали метод ум_ПакетыДанныхОбработка.ОбработатьПакетыДанных(СпособОбработкиДляЗапуска) - форсировали обработку пакетов по способу.
3. Запустили длительную операцию средствами БСП, в которую передали идентификаторы созданных пакетов.
3.1. Обработчик длительной операции в цикле (через небольшую паузу) считывает состояние обработки пакетов (ищем в в РС ум_ПакетыДанных по идентификатору).
3.2. Когда все отслеживаемые пакеты обработаны - длительную операцию завершаем.

Таким образом вы выполните свою задачу многопоточно. В подавляющем большинстве случаев пакеты будут обработаны сразу, при этом вы не перегрузите в моменте сервер. Даже если 1000 пользователей будут что то делать будет запущено не более указанного в способе обработки количество потоков (а не 1000 * кол-во потоков из способа). Это типовой сценарий безопасного синхронного запуска многопоточной обработки.
n_mezentsev; +1 – Ответить
Для отправки сообщения требуется регистрация/авторизация