为什么要使用mmap进行IPC呢,个人总结有三点:
- 接口简单好用
- 多进程操作同一文件的时候使用mmap维护一下读写信息的meta数据非常方便
- 方便在非亲属进程间同步时使用
为什么要用posix semaphore进程同步呢,个人总结有三点:
- 接口简单好用
- 效率高,在Linux3.2.0开销只有0.41个Clock(而XSI semaphore有7.33)
- 方便在非亲属进程间同步时使用
posix semaphore有两种使用方式,一种是named semaphore另一种就是unnamed semaphore,它们创建与销毁接口不一样,关于posix semaphore的接口可以参考APUE,然后这里和这里都非常详细介绍了命名posix semaphore和内存中非命名posix semaphore的使用方法。
named semaphore使用的时候需要相关进程都使用同一名字,那各个毫无亲戚关系的进程这么知道使用改名字打了哪个信号量文件呢?在/dev/shm中会存放一个sem file,比如如果使用"mutex"作为semaphore名字的时候,在/dev/shm会创建一个sem.mutex的文件,其它进程在使用"mutex"这个名字打开semaphore的时候会使用该文件,这样各个进程就知道了是同一semaphore了,代码中有注释。
unnamed semaphore则可以通过类似于共享内存的方式存放semaphore变量(sem_t),这里我们本

本文探讨了为何使用mmap进行进程间通信(IPC)和选择posix semaphore进行进程同步的原因,强调了它们接口的简洁性和在非亲属进程间的适用性。文章详细阐述了named semaphore和unnamed semaphore的创建、销毁以及使用方法,并通过示例代码展示了如何结合mmap实现进程间的读写同步。两个进程通过共享的cnt变量,利用posix semaphore确保对资源的正确访问。
最低0.47元/天 解锁文章
966

被折叠的 条评论
为什么被折叠?



