Linux下的进程间通信:共享存储
相比于锁的 API,消费者程序会相对复杂一点儿。特别的,消费者程序首先检查文件是否被排斥性的被锁,然后才尝试去获得一个共享锁。相关的代码为:
在 假如当前文件没有被锁,那么消费者将尝试获取一个共享(read-only)锁( 下面的
在本次的代码示例中,通过 IPC 传输的数据是文本:它们来自莎士比亚的戏剧《理查三世》中的两行台词。然而,共享文件的内容还可以是纷繁复杂的,任意的字节数据(例如一个电影)都可以,这使得文件共享变成了一个非常灵活的 IPC 机制。但它的缺点是文件获取速度较慢,因为文件的获取涉及到读或者写。同往常一样,编程总是伴随着折中。下面的例子将通过共享内存来做 IPC,而不是通过共享文件,在性能上相应的有极大的提升。 共享内存对于共享内存,Linux 系统提供了两类不同的 API:传统的 System V API 和更新一点的 POSIX API。在单个应用中,这些 API 不能混用。但是,POSIX 方式的一个坏处是它的特性仍在发展中,并且依赖于安装的内核版本,这非常影响代码的可移植性。例如,默认情况下,POSIX API 用内存映射文件来实现共享内存:对于一个共享的内存段,系统为相应的内容维护一个备份文件。在 POSIX 规范下共享内存可以被配置为不需要备份文件,但这可能会影响可移植性。我的例子中使用的是带有备份文件的 POSIX API,这既结合了内存获取的速度优势,又获得了文件存储的持久性。 下面的共享内存例子中包含两个程序,分别名为
在每个源程序的最上方注释部分都解释了在编译它们时需要添加的链接参数。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Windows 2003中搭建视频处事器
- 如何在MacOS上安装Elasticsearch
- windows-server-2008-r2 – 重新启动后,Windows 2008 R2会忘
- Windows 8.1中的指纹登录功能
- Windows 11进一步削弱控制面板 程序和功能转走了
- windows-server-2008-r2 – Windows任务计划程序在下次运行
- 用于QA测试的Windows桌面(XP,Vista或Win7)EC2 AMI
- windows – 在多域林中,当某些(但不是全部)基础架构大师在全
- 微软新的版本发布模式将一步一步把 Windows 10 玩出碎片化?
- 未来5年动漫市场将保持50%增长