linux - 如何使用共享内存来共享程序中的数据

标签 linux shared-memory

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

为了以后方便更新,我觉得多进程比多线程好

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

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

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

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

还有,也许我会添加一个网络服务器来读取即时数据并通过浏览器显示

问题是:

  1. 多进程真的比多线程好吗?

  2. 如果使用多进程,那么使用共享内存,有什么缺点吗。

最佳答案

is multi-process really better multi-thread?

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

If use multi-process, how about use shared memory, is there any disadvantage.

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

关于linux - 如何使用共享内存来共享程序中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726503/

相关文章:

php - Laravel 5.2 获取Linux系统环境变量

linux - 64 位 Linux 机器中可能的最大共享内存大小

python - 在共享状态多处理中访问管理器对象

c - ipcs 不显示我的共享内存和信号量

c++ - 可以在没有互斥锁的情况下读取和验证共享内存吗?

linux - Apache VirtualHost 403 被禁止

linux - 如何使用 apt-get 在用户定义的目录中安装软件包?

Linux 串行端口通信超时 - VirtualBox 直通

c - 如何使用 ffmpeg 从 H264 SPS 获取宽度和高度

c++ - Boost 的 managed_shared_memory 在两个进程(C 和 C++)之间的使用