c++ - 在应用程序之间共享数据——共享内存与 D-Bus 与文件操作

标签 c++ qt shared-memory dbus file-handling

考虑一个场景,其中两个应用程序必须在它们之间共享数据。我可以想到三种方法-

  1. 共享内存(允许我使用 Boost)
  2. D-Bus(允许 glib/Qt 实现)
  3. 两个应用程序之间对公共(public)文件的文件操作。

Q1。考虑到要共享的数据将非常大(例如大约 10K 首歌曲名称),我应该采用哪种方法。

Q2。与其他操作相比,进行文件操作是否会影响速度,因为会涉及硬盘?

Q3。有没有其他速度更快的方法?

实现语言 - C++

最佳答案

您可能需要考虑使用 QtSql 模块来使用数据库,特别是 SQLite。

SQLite database 是一个跨平台的进程内数据库引擎。这使您可以轻松地存储结构化数据并在进程之间安全地并发访问它,这些进程甚至可以用不同的语言编写。

SQLite 可以很好地处理数百万条记录,非常快速和可靠。 主要问题是进程都在写入,因为它使用数据库级锁定,因此在写入操作期间没有其他进程可以读取或写入数据库。

使用 QtSql 的另一个好处是,将来您可以使用 PostgreSQL 或 MySQL 等数据库服务器轻松地使程序跨网络运行。

关于c++ - 在应用程序之间共享数据——共享内存与 D-Bus 与文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8602651/

相关文章:

c++ - QComboBox如何使用QItemSelectionModel?

c++ - 如何着手开发新的 Qt 5.7+ High-DPI Per Monitor DPI Aware 应用程序?

使用 shmat 后无法在标准输出上打印

java - 将 node.js 进程与 java/scala 代码连接起来的最快方法

c++ - 如何在qtcreator中实现Qabstractvideosurface和逐帧监控视频?

c++ - 从逗号分隔的字符串中解析整数

c++ - 为什么返回和非返回 std::functions 是可转换的?

python - 有没有办法在 PySide 或 PyQt 中向 QListView 添加部分?

macos - "window compositor"(WindowServer 进程)在 Mac OS X(和 iOS)中是如何实现的?

c++ - MFC:CSting IntelliSense:没有重载函数的实例