进程之间的通信
管道:管道是一种半双工的通信方式,各个进程互斥访问管道,数据也只能单向流动,但是可以通过两个管道来实现全双工通信。
共享存储:多个进程都可以互斥访问的存储空间,可以基于数据结构(比如数组)或者基于存储区。
消息队列:传递结构化的消息。各个进程都有一个相当与信箱一样的消息缓冲队列。进程A和进程B通信就可以发消息给进程A的消息缓冲队列。
信号量:主要用来控制多个进程对共享资源的访问。主要作为进程间以及同一进程内不同线程之间的同步手段。信号量有整形和记录型信号量。整形信号量不满足“让权等待”原则,而记录型信号量有block和weakup原语,可以实现让权等待。
套接字:
与其他通信机制不同的是,可用于不同机器间的进程通信。
线程之间的通信:
线程之间的通信不像进程那么复杂,因为同一个进程的线程资源都基本上是一样的,它们的通信目的主要是用于线程同步和互斥访问某个资源,所以线程没有像进程通信中的用于数据交换的通信机制。