Linux下的进程间通信:共享存储
|
相比于锁的 API,消费者程序会相对复杂一点儿。特别的,消费者程序首先检查文件是否被排斥性的被锁,然后才尝试去获得一个共享锁。相关的代码为:
在 假如当前文件没有被锁,那么消费者将尝试获取一个共享(read-only)锁( 下面的
在本次的代码示例中,通过 IPC 传输的数据是文本:它们来自莎士比亚的戏剧《理查三世》中的两行台词。然而,共享文件的内容还可以是纷繁复杂的,任意的字节数据(例如一个电影)都可以,这使得文件共享变成了一个非常灵活的 IPC 机制。但它的缺点是文件获取速度较慢,因为文件的获取涉及到读或者写。同往常一样,编程总是伴随着折中。下面的例子将通过共享内存来做 IPC,而不是通过共享文件,在性能上相应的有极大的提升。 共享内存对于共享内存,Linux 系统提供了两类不同的 API:传统的 System V API 和更新一点的 POSIX API。在单个应用中,这些 API 不能混用。但是,POSIX 方式的一个坏处是它的特性仍在发展中,并且依赖于安装的内核版本,这非常影响代码的可移植性。例如,默认情况下,POSIX API 用内存映射文件来实现共享内存:对于一个共享的内存段,系统为相应的内容维护一个备份文件。在 POSIX 规范下共享内存可以被配置为不需要备份文件,但这可能会影响可移植性。我的例子中使用的是带有备份文件的 POSIX API,这既结合了内存获取的速度优势,又获得了文件存储的持久性。 下面的共享内存例子中包含两个程序,分别名为
在每个源程序的最上方注释部分都解释了在编译它们时需要添加的链接参数。 (编辑:鞍山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- microsoft-office-365 – 在Office 365中验证后,
- Linux实用监控脚本——使用 Shell检测进程 CPU 利
- 8个在KDE Plasma桌面环境下提高生产力的技巧和提
- 在Ubuntu和Debian上启用双因子身份验证的三种备选
- Win10怎么打开html文件 Win10打开html文件的方法
- Windows 10份额继续猛涨:悄悄甩开Windows 7
- windows-server-2008 – 随着时间的推移,响应时间
- active-directory – 如果没有Microsoft帐户,Win
- 帮助你驾驭 Kubernetes 的 4 个工具
- 在AppImage、Flathub和Snapcraft平台上搜索Linux
