Почти 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 ++?
Так что, скорее, это скорее философский вопрос, я надеюсь, что мог бы описать его ясным образом ... если нет, пожалуйста, помогите мне перефразировать его соответствующим образом.
Спасибо,
Приветствия, Бен