В настоящее время у меня есть приложение, в котором используются актеры, созданные вручную. Мой план состоит в том, чтобы отправить его в libcaf.Портальные системы управления для libcaf
Текущее состояние: У меня есть одна большая глобальная очередь сообщений, где мои системы (ака актеры) подписываются на получение своих сообщений. Они отвечают сообщениями на эту глобальную очередь.
Вся система - приложение реального времени, которое работает на ядре Linux rt-preempt. Поток GUI - это сама система (актер), но она не относится к приоритету RT.
Прямо сейчас моим системам не нужно знать получателей своих сообщений, потому что приемники регистрируются для своих желаемых.
Моя идея портирования следующая: я использую один глобальный актер в качестве замены для моей глобальной очереди сообщений и обрабатывает регистрацию для сообщений. Таким образом, я могу получить простой журнал сообщений для целей отладки, и мне не нужно позволять всем актерам знать все возможные цели.
У меня есть система ввода-вывода (canbus), которая управляет контактом с реальным миром.
В моей текущей системе я создаю нить + систему GUI. Он ждет инициализации RT. После генерации потока gui я переключаюсь на приоритет RT Preempt и создаю другие системы, префикс стека и так далее. Когда все настроено, я уведомляю gui о том, что RT вверх. Теперь моя система инициализирована.
Когда происходят некоторые фатальные события или система нуждается в выключении, я отправляю сообщение, и все системы закрываются, и все потоки соединяются.
Мои вопросы: Как я могу разделить актер/поток GUI от потока RT в libcaf? Вы бы рекомендовали развернуть графический интерфейс в отдельном процессе? Могу ли я создавать актеров на разных потоках приоритета RT?
EDIT: Я нахожу опцию spawn
detached
. Являются ли порожденные актеры (дети отдельного актера) в одной и той же теме?
Благодарим вас за подробный ответ! Я собираюсь написать доказательство концепции. Об атрибутах потока: в основном это просто 'sched_setscheduler' и' mlockall', которые нужно вызвать в потоке RT один раз. Поэтому я не думаю, что ничего особенного добавить в libcaf. –