Web Analytics
yangyang

码农兼一个普普通通小青年

Circular Queue


使用内存映射文件实现进程间通讯

在前文浅谈内存映射文件中详细介绍了什么是内存映射文件(Memory-Mapped File, MMF),以及内存映射文件的用法。在其诸多应用中,很重要的一个就是进程间通讯(Inter-Process Communication,IPC)。内存映射文件允许将文件内容直接映射到进程的虚拟地址空间,使得应用程序能够像访问内存一样访问文件数据。但要正确和高效地使用内存映射文件进行进程间通讯则需要一些技巧,它需要处理多个进程对同一块内存区域进行高效的读写问题,这里就自然涉及到竞争和同步。本文首先介绍了一个简单的一对一的使用MMF进行进程间单向通讯的例子,紧接着指出其中的低效,然后通过引入环形队列数据结构来分隔读和写,从而达到移除锁的使用,进而大幅提高效率。最后在此基础上介绍了一对一双向通讯,以及一对多通讯的实现思路。 …

IPC Circular Queue MMF SPSC SPMC

浅谈环形队列数据结构

环形队列(Circular Queue),也被称为环形缓冲区(Circular Buffer)或环状缓冲区(Ring Buffer)。这是一个在高性能计算、底层驱动和实时系统中极为重要和常见的数据结构。环形队列有很多应用,比如音视频处理中的平滑地处理数据流,防止卡顿;操作系统内核中的I/O缓冲区、管道(Pipe)的实现;网络通信中用于收发网络数据包的缓冲区;以及使用内存映射文件进行进程间通讯时,使用环形缓冲区能够减少锁占用。 …

Circular Queue Ring Buffer

  • 1