как насчет использования общей памяти для обмена данными в программе - PullRequest
0 голосов
/ 04 января 2012

Я хочу написать «встроенную систему управления» в Linux

Чтобы облегчить обновление в будущем, я думаю, что многопроцессорность лучше, чем muti-thread

Итак, эта система может быть разделена на 3 программы

  1. «обработать», прочитать некоторые входные данные из других и выполнить некоторые вычисления, а затем сохранить результат в общей памяти

  2. «отображение», считывание мгновенных данных из общей памяти и выбор некоторых данных для отображения в пользовательском интерфейсе (записано Qt)

  3. «база данных», считывание мгновенных данных из общей памяти и сохранение их за определенный период времени; сначала данные будут сохранены в двоичных файлах, и, возможно, в будущем вместо этого будет использоваться sqlite

и nore, может быть, я добавлю веб-сервер, чтобы читать мгновенные данные и показывать их через браузер

вот вопрос:

  1. действительно ли многопроцессорность действительно лучше многопоточности?

  2. Если использовать многопроцессорность, как насчет использования общей памяти, есть ли какой-либо недостаток.

Ответы [ 3 ]

2 голосов
/ 04 января 2012

действительно ли многопроцессорность действительно лучше многопоточности?

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

Если вы используете многопроцессорность, как насчет использования разделяемой памяти, есть ли недостаток.

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

1 голос
/ 04 января 2012

Вы уже используете Qt, который подходит для встроенных систем .Отлично.

Имеет хорошие API для сокетов TCP и * nix и хорошие протоколы потоковой передачи данных.Если вы не требуете абсолютно падающей производительности, я бы ошибался на стороне безопасных, отдельных процессов.

0 голосов
/ 04 января 2012

Преимуществом трех процессов является то, что защищенное адресное пространство предотвращает нежелательную связь между процессами.

Преимуществом трех процессов является то, что защищенное адресное пространство препятствует требуемой связи между процессами.* Межпроцессное взаимодействие медленнее и сложнее в управлении, чем межпотоковая связь.

...