进程与线程
一.通信
1.进程间的通信:
- 01.共享内存:指的是两个或多个进程共享一个给定的存储区。
- 02.共享文件
03.管道(pipe)
- 无名管道:是 UNIX 系统IPC最古老的形式。
特点:
001.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。
002.它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。
003.它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。 - 命名管道
001.可在两个无关的进程中交换数据
04.消息队列
- 001.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
- 002.消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
- 003.消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
05.信号量:一个计数器,用于实现进程间的互斥与同步,而不是用于进程间的数据通信。
06.Socket和Stream:Socket和Stream支持不同主机上的两个进程IPC2.线程间的通信
线程间的通信就是为了保持各个线程之间的协同工作。大概有以下几种方式:
- 01.等待通知机制(
wait/notify):这个机制的目的其实就是实现各个线程之间的合作。【比如说消费者/生产者实现;哲学家进餐问题等】 - 02.
join操作【为了让父进程在子进程消亡之后再消亡】 - 03.类
ThreaLocal的使用【让每个进程都有一个自己的变量,即各个线程之间互不干扰】
















