Linux下的进程间通信:共享存储
相比于锁的 API,消费者程序会相对复杂一点儿。特别的,消费者程序首先检查文件是否被排斥性的被锁,然后才尝试去获得一个共享锁。相关的代码为:
在 假如当前文件没有被锁,那么消费者将尝试获取一个共享(read-only)锁( 下面的
在本次的代码示例中,通过 IPC 传输的数据是文本:它们来自莎士比亚的戏剧《理查三世》中的两行台词。然而,共享文件的内容还可以是纷繁复杂的,任意的字节数据(例如一个电影)都可以,这使得文件共享变成了一个非常灵活的 IPC 机制。但它的缺点是文件获取速度较慢,因为文件的获取涉及到读或者写。同往常一样,编程总是伴随着折中。下面的例子将通过共享内存来做 IPC,而不是通过共享文件,在性能上相应的有极大的提升。 共享内存对于共享内存,Linux 系统提供了两类不同的 API:传统的 System V API 和更新一点的 POSIX API。在单个应用中,这些 API 不能混用。但是,POSIX 方式的一个坏处是它的特性仍在发展中,并且依赖于安装的内核版本,这非常影响代码的可移植性。例如,默认情况下,POSIX API 用内存映射文件来实现共享内存:对于一个共享的内存段,系统为相应的内容维护一个备份文件。在 POSIX 规范下共享内存可以被配置为不需要备份文件,但这可能会影响可移植性。我的例子中使用的是带有备份文件的 POSIX API,这既结合了内存获取的速度优势,又获得了文件存储的持久性。 下面的共享内存例子中包含两个程序,分别名为
在每个源程序的最上方注释部分都解释了在编译它们时需要添加的链接参数。 (编辑:上海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Linux中切换相同程序的不同版本
- 如何提交你的第一个Linux内核补丁
- Windows 11 22523推荐 进一步淘汰控制面板、修复电量超100%
- Win10累积更新补丁KB3176493不能安装怎么办
- 详解Linux Multipath多路径配置--概念、配置、常用维护命令
- Windows 10 2019年度更新来了:新功能全体验
- 安装Windows 11后应该做的11件事
- windows-7 – 如何在Windows 7中强制更新用户的组成员身份?
- Win11更新包体积暴减 40% 运用时段等功能将默认打开
- windows-server-2008 – 无法将OSX 10.9绑定到Active Direc