进程间通信
匿名管道
用于父子进程之间通讯,它是半双工的(数据只按一个方向流动),固定的读端和写端口。
管道本质是利用内核缓冲区,一个进程对缓冲区写数据,一个进程对缓冲区读数据,从而实现通信。
命名管道
同匿名管道,但它是用于任意进程之间的通信,相比于匿名管道,他有一个名字,通过名字可以找到一个磁盘节点,从而进行数据的交换。
消息队列
系统内核中维护了一个链表用于当作队列,进程可以给队列添加消息,也可以读取消息。
共享内存
多个进程划分一块共享内存,共享内存中的地址映射到多个进程中,一个进程写数据,可以立即被其他进程读取。
共享存储不需要数据拷贝,效率很高。
信号量
信号量是用于实现系统的PV操作,信号量的操作都是原子性的。
信号量用于进程间同步,若要交换数据,需要结合共享内存。
套字接socket
本地socket,他不同于网络socket,是用于进程间通信
信号
用于处理进程事件
线程间通信
进程内的空间是所有线程共享的,线程可以随意读取,但是这种通信获取的值并不准确。
共享内存
volatile:给变量标记volatile后,变量就具有可见性,各线程可用于判断
信号/消息传递
传统方式, 通过信号量来通知各线程、进程间通信pv操作
实现: wait notify notifyAll
管道流
pipelie连接两个线程,同进程间的管道