Обмен данными между приложениями - совместное использование памяти против шины D против операции с файлами - PullRequest
2 голосов
/ 22 декабря 2011

Рассмотрим сценарий, в котором два приложения должны обмениваться данными между собой.Я могу придумать три способа:

  1. Общая память (поддержка, которую мне разрешено использовать)
  2. D-Bus (допускается реализация glib / Qt)
  3. Операции с файламина общий файл между двумя приложениями.

Q1.Какой подход должен быть для меня, учитывая, что данные для обмена будут очень большими (например, некоторые названия песен 10K).

Q2.Повлияет ли выполнение файловой операции на скорость, по сравнению с другими, поскольку будет задействован жесткий диск?

Q3.Есть ли другой подход с лучшей скоростью?

Язык реализации - C ++

1 Ответ

2 голосов
/ 22 декабря 2011

Вы можете рассмотреть возможность использования модуля QtSql для использования базы данных, в частности SQLite.

База данных SQLite представляет собой кроссплатформенное ядро ​​базы данных в процессе работы. Это позволяет легко хранить структурированные данные и одновременно и безопасно обращаться к ним между процессами, процессы могут даже быть написаны на разных языках.

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

Другое преимущество использования QtSql заключается в том, что в будущем вы можете легко заставить программы работать по сети, используя сервер баз данных, такой как PostgreSQL или MySQL.

...