ram中的共享内存或命名管道

Shared memory or named pipes in ram?

本文关键字:管道 内存 共享 ram      更新时间:2023-10-16

我想在两个不同的程序之间进行通信。一个改装的氛围灯程序,输出led信息和我自己的程序,读取这些信息。

我读过关于命名管道和共享内存的文章。但对我来说,数据存储在哪里还不清楚。由于我会交换很多数据,我不想每次都把这些数据写入磁盘。我使用的是树莓派,sd卡应该可以再使用一段时间;)

因此,基本问题是:用什么方法可以在不写入磁盘的情况下将信息交换到另一端?我不确定共享内存是否被写入ram,我想弄清楚这一点。我读到的另一个想法是/dev/shm,它应该是一个ram磁盘。我也可以在这个位置使用命名管道吗?信息会保存在ram中吗?

最好的方法是什么?谢谢:)

我读过关于命名管道和共享内存的文章。但对我来说还不清楚其中存储数据。

在这两种情况下,数据都存储在内存中(命名管道看起来像是位于文件系统中,但实际数据存储在内存上)。

什么方法更好,取决于实际应用。管道具有相当有限的缓冲区(很可能是64kb),当缓冲区已满时,对它的写入将被阻塞。共享内存可以是任意大的,但不利的是,共享内存就像普通内存一样。你必须自己处理同步等问题。

共享内存和命名管道(以及unix域套接字)IPC不会写入您的SD卡,除非您分配的内存超过可用的物理RAM(256MB或512MB,具体取决于您的raspberrypi型号)。如果你这样做,它将开始交换,并且可能会减慢速度。