Организация очередей при параллельных циклах

Простейшие вопросы в области инженерной разработки
Ответить
Sergey Puzanov
assistant
assistant
Сообщения: 118
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 4 раза
Контактная информация:

Организация очередей при параллельных циклах

Сообщение Sergey Puzanov »

Добрый день. Вопрос про структуру кода и передачу данных. Имеется 5 параллельных циклов: обработка пользовательских событий, UI, приём данных с аппаратуры, передача по сети и запись в файл. Для инициализации модулей нужно передавать данные из 2 цикла в 3 цикл, для передачи и записи из 3 в 4 и 5 соответственно. Для этого нужно класть в соответствующую очередь событие + необходимые данные. Отсюда вопрос - является ли нормальным паттерном вызов из любого цикла события для любой другой очереди, или есть какое-то более изящное решение и контроль всех очередей в одном цикле? Спасибо.
rushonda
developer
developer
Сообщения: 289
Зарегистрирован: 26 фев 2016, 06:31
Версия LabVIEW: 18-20
Благодарил (а): 6 раз
Поблагодарили: 7 раз
Контактная информация:

Re: Организация очередей при параллельных циклах

Сообщение rushonda »

есть библиотека Tasking2. Тут на форуме можно скачать где-то. Мне понравилась - там все основные механизмы взаимодействия для начала есть. Есть тема с проектом на ее основе: viewtopic.php?p=71086#p71086.
Конечно все зависит от масштаба проекта. Можно для небольшого проекта посмотреть на JKI State Machine - тоже удобная штука.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Организация очередей при параллельных циклах

Сообщение jane_wild »

Actor Framework вот тема, она мне достаточно сильно помогла, ей правда уже лет 8, но приципы то не изменились. Так вот там taras_33 пытался на примерах рассказать что это такое.
Sergey Puzanov
assistant
assistant
Сообщения: 118
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 4 раза
Контактная информация:

Re: Организация очередей при параллельных циклах

Сообщение Sergey Puzanov »

Спасибо, изучу, надеюсь не сильно долго будет переходить на эту модель, если там всё более структурировано, нежели при очередях
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 175 раз
Контактная информация:

Re: Организация очередей при параллельных циклах

Сообщение Artem.spb »

Sergey Puzanov писал(а): 24 май 2023, 14:20 Спасибо, изучу, надеюсь не сильно долго будет переходить на эту модель, если там всё более структурировано, нежели при очередях
Ну Акторы - это надстройка надстройка над очередями, так что структурированность зависит от программиста, а не от шаблона :)
А в целом разумно делать так чтобы разные части проекта как можно меньше знали друг о друге.
Но это в идеальном и большом проекте с прицелом на изменения.
Например, цикл чтения с оборудования не должен знать кто, что и как пишет в какой-то файл. Его задача считать значения и отправить дальше. В обратную сторону так же.
В этом случае каждый участок проекта можно относительно просто модифицировать (например, изменив тип оборудования), без поиска зависимостей по всему коду.
Но всегда стоит вопрос сроков, масштабов проекта и задач.
Что по мне, так акторы - не самая разумная идея для начала изучения :labview: , есть риск запутаться :)
Sergey Puzanov
assistant
assistant
Сообщения: 118
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 4 раза
Контактная информация:

Re: Организация очередей при параллельных циклах

Сообщение Sergey Puzanov »

Artem.spb писал(а): 24 май 2023, 16:11 Например, цикл чтения с оборудования не должен знать кто, что и как пишет в какой-то файл. Его задача считать значения и отправить дальше. В обратную сторону так же.
Вот в этом собственно и вопрос - если я положу собранные данные в очередь, отвечающую за запись, и в очередь, отвечающую за отправку, а если по простому - проведу провода этих самых очередей в цикл сбора, не является ли это антипаттерном? С одной стороны, он не будет знать, "кто и что пишет", с другой будет знать, "куда" передать. Вроде звучит логично, просто хочу убедиться, правильно ли делаю.
Artem.spb писал(а): 24 май 2023, 16:11 Что по мне, так акторы - не самая разумная идея для начала изучения :labview: , есть риск запутаться :)
Хочется верить,что после 3 лет работы уже не совсем начало изучения идёт, но с каждым вопросом на форуме всё больше становиться понятно, что есть куда стремиться.
Аватара пользователя
ladik

Silver
developer
developer
Сообщения: 275
Зарегистрирован: 18 ноя 2014, 11:45
Награды: 1
Версия LabVIEW: 2015, 2019
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Организация очередей при параллельных циклах

Сообщение ladik »

Посмотрите ещё в сторону Workers. Попроще чем Акторы в освоении, но тоже весьма удобная штуковина.
Дорогу осилит идущий.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»