如何使用共享内存在程序中共享数据

时间:2012-01-04 11:57:58

标签: linux shared-memory

我想在Linux上编写一个“嵌入式控制系统”

为了便于将来更新,我认为多进程比多线程更好

所以,这个系统可能分成3个程序

  1. “进程”,从其他人那里读取一些输入数据并进行一些计算,然后将结果保存到共享内存

  2. “显示”,从共享内存中读取即时数据并选择要在UI上显示的一些数据(由Qt编写)

  3. “数据库”,从共享内存中读取即时数据并保存在一段时间内,数据首先保存在二进制文件中,以后可能会使用sqlite

  4. 和nore,也许我会添加一个Web服务器来读取即时数据并通过浏览器显示它

    这是一个问题:

    1. 是多进程真的更好的多线程吗?

    2. 如果使用多进程,如何使用共享内存,是否有任何缺点。

3 个答案:

答案 0 :(得分:2)

  

是多进程真的更好的多线程吗?

取决于你想做什么。多处理强制实现系统组件之间的严格分离,允许各种部件使用不同的凭证运行。它确实需要比多线程更复杂的通信机制,并产生一些开销。

  

如果使用多进程,如何使用共享内存,是否有任何缺点。

与使用套接字的明显替代方案相比,主要缺点是它将整个系统限制为在单个主机上运行。没有分布式计算。

答案 1 :(得分:1)

您已使用Qt,即suitable for embedded systems。大。

它具有良好的TCP套接字和* nix套接字API,以及良好的数据流协议。除非你要求绝对的炙手可热的表现,否则我会站在安全,独立的过程中。

答案 2 :(得分:0)

三个进程的优点是受保护的地址空间可以防止进程之间进行不必要的通信。

三个流程的优点是受保护的地址空间阻碍了流程之间的通信。

进程间通信比线程间通信更慢,更难管理。