Шаблон проектирования для потоковых сервисов / интерфейсов Infinite Loop +? - PullRequest
0 голосов
/ 11 февраля 2019

Почти 20 лет.в Embedded / C ++ dev. Я часто возвращаюсь к одной и той же ситуации бесконечного цикла, заполненного различными классами многопоточных сервисов (запуск / остановка через шаблоны проектирования Abstract Factory / Singleton), такими как сокет TCP, шина CAN, последовательная связь, ведение журнала, питаниеFDIR, пул данных, Telemetry / Telecomand Engine (шаблон проектирования синтаксического анализатора команд), все эти сервисы взаимодействуют через очереди RX / TX.Это часто приводит к тому, что класс Service-Interface создается (один раз, разумеется), глобально (не кричите!) И / или имеет бесконечный цикл, основанный на C / Glib g_main_loop () (не кричите!)

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

Возможно, мне не хватает подходящего словаря (у меня 90% C ++ autodidact) и / или хорошая отправная точка ...

Поскольку StackOverflow запрещает нечеткие вопросы, я думаю, моя проблема может быть уменьшенав понимании того, что должно быть (или нет!) в функции main () (например, где / когда создавать / запускать / останавливать классы интерфейса) и / или каков хороший ссылочный код для чтения / ссылки для многопоточного / поставленного в очередь-услуги вокруг бесконечного цикла while () в современном C ++?

Так что, скорее, это скорее философский вопрос, я надеюсь, что мог бы описать его ясным образом ... если нет, пожалуйста, помогите мне перефразировать его соответствующим образом.

Спасибо,

Приветствия, Бен

...