《UNIX网络编程 卷2:进程间通信(第2版)》——1.9 小结

本节书摘来自异步社区《UNIX网络编程 卷2:进程间通信(第2版)》一书中的第1章,第1.9节,作者:【美】W. Richard Stevens著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.9 小结

IPC传统上是Unix中一个杂乱不堪的领域。虽然有了各种各样的解决办法,但没有一个是完美的。我们的讨论分成4个主要领域:

(1)消息传递(管道、FIFO、消息队列);

(2)同步(互斥锁、条件变量、读写锁、信号量);

(3)共享内存区(匿名共享内存区、有名共享内存区);

(4)过程调用(Solaris门、Sun RPC)。

我们考虑单个进程中多个线程间的IPC以及多个进程间的IPC。

各种类型IPC的持续性可以是随进程持续的、随内核持续的或随文件系统持续的,这取决于IPC对象存在时间的长短。在为给定的应用选择所用的IPC类型时,我们必须清楚相应IPC对象的持续性。

各种类型IPC的另一个特性是名字空间,也就是使用IPC对象的进程和线程标识各个IPC对象的方式。各种类型的IPC有些没有名字(管道、互斥锁、条件变量、读写锁),有些具有在文件系统中的名字(FIFO),有些具有将在第2章中讲述的Posix IPC名字,有些则具有其他类型的名字(将在第3章中讲述的System V IPC键或标识符)。典型做法是:服务器以某个名字创建一个IPC对象,客户则使用该名字访问同一个IPC对象。

本书中所有源代码使用1.6节中讲述的包裹函数来缩短篇幅,同时达到检查每个函数调用是否返回错误的目的。我们的包裹函数都以一个大写字母开头。

IEEE Posix标准一直是多数厂家努力遵循的标准,其中Posix.1定义了访问Unix的基本C接口,Posix.2定义了标准命令。然而商业标准也在迅速地吸纳并扩展Posix标准,著名的有Open Group的Unix标准,例如Unix 98。

上一篇:Massive MIMO 的系统性能分析(上) | 带你读《大规模天线波束赋形技术原理与设计 》之十七


下一篇:Massive MIMO 的系统性能分析(下) | 带你读《大规模天线波束赋形技术原理与设计 》之十八