Linux下的进程间通信:共享存储
相比于锁的 API,消费者程序会相对复杂一点儿。特别的,消费者程序首先检查文件是否被排斥性的被锁,然后才尝试去获得一个共享锁。相关的代码为:
在 假如当前文件没有被锁,那么消费者将尝试获取一个共享(read-only)锁( 下面的
在本次的代码示例中,通过 IPC 传输的数据是文本:它们来自莎士比亚的戏剧《理查三世》中的两行台词。然而,共享文件的内容还可以是纷繁复杂的,任意的字节数据(例如一个电影)都可以,这使得文件共享变成了一个非常灵活的 IPC 机制。但它的缺点是文件获取速度较慢,因为文件的获取涉及到读或者写。同往常一样,编程总是伴随着折中。下面的例子将通过共享内存来做 IPC,而不是通过共享文件,在性能上相应的有极大的提升。 共享内存对于共享内存,Linux 系统提供了两类不同的 API:传统的 System V API 和更新一点的 POSIX API。在单个应用中,这些 API 不能混用。但是,POSIX 方式的一个坏处是它的特性仍在发展中,并且依赖于安装的内核版本,这非常影响代码的可移植性。例如,默认情况下,POSIX API 用内存映射文件来实现共享内存:对于一个共享的内存段,系统为相应的内容维护一个备份文件。在 POSIX 规范下共享内存可以被配置为不需要备份文件,但这可能会影响可移植性。我的例子中使用的是带有备份文件的 POSIX API,这既结合了内存获取的速度优势,又获得了文件存储的持久性。 下面的共享内存例子中包含两个程序,分别名为
在每个源程序的最上方注释部分都解释了在编译它们时需要添加的链接参数。 (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- HTTPie:替代Curl和Wget的现代HTTP命令行客户端
- 使用strace查找Emacs启动阻塞的原因
- 31 岁的 RISC OS 即将在 Apache 2.0 许可下重新开
- windows-7 – 虚拟机客户优化提示
- 短小强大的8个Linux命令,分分钟帮你提高工作效率
- 在Windows 7上编辑IDLE(Python GUI)上下文菜单
- 全球浏览器Top 10排名十年变化:2009~2019,结果
- windows-server-2008 – 在Windows Server 2008上
- Windows – 从java代码中编程查找绝对的java.exe
- windows-server-2008 – 什么是“很多”页面错误