上一篇文章我们已经介绍了进程间的内存共享。因为篇幅关系,只是做了简单实现,并不适用于实际应用。因此本篇以实际应用为目的,介绍以循环队列实现的内存共享机制。 该机制可以快速实现数据的先入先出,方便控制内存的大小,减少数据的拷贝次数,且可以方便的选择是数据完整性优先还是实时性优先 实现的原理非常简单,以数据完整性优先为例。我们可以创建如上所示的共享内存,将前面的几个字节定义为信息交流的空间,写进程会在这边填入共享内存的信息,而读进程会根据这些信息来读取数据。 填入信息之后,写进程一有数据需要写入,便去内存中找到紧挨着的一块还没写入数据的内存(这里以数据的第一位为0表示还没有写入数据,当然也可以是其他的值这个随便定义,而且本人也建议将数据块前面的几个字节作为保留位以方便后面开发会比较妥当)进行写入,把标志位置1然后把指针移动到下一位。直到内存被写满为止,也就是下一位内存的标志位1。 读进程则看到自己指针所指的数据块的标志位为1则