面试题集锦--进程与线程通信
进程:信号量,事件,计时器,互斥锁
线程:互斥量,临界区,读写锁(当然,线程也可以用信号量、事件)
进程通信
1、匿名管道。匿名管道是半双工方式,数据只能单向流动,而且只能在亲缘关系的进程中通信。
2、命名管道。匿名管道也是半双工方式,但是它允许无亲缘关系的进程间通信。
3、信号量。信号量是一个计数器,可以用来控制多个进程对同共享资源的访问。它作为一种机制锁,可以防止某进程访问共享资源时,其它进程也访问该资源。主要作为进程间或者同一进程内不同线程之间的同步手段。
4、共享内存。共享内存就是映射一段能够被其它进程访问的内存,这段内存由一个进程创建,但是可以被多个进程访问。共享内存是最快的IPC(Inter-Process Communication)方式 。通常共享内存要配合信号量使用。
5、套接字。可用于不同进程间的通信。
6、消息队列。
线程通信
1、锁机制。包括互斥锁、读写锁和条件变量
互斥锁:以排它式方式数据结构被并发修改
读写锁:允许多个线程同时读数据,但是每次只允许一个线程写数据。
条件变量:当不满足某些条件时会一直阻塞进程,直到满足某个条件为止。条件变量与互斥锁配合使用
2、信号量机制
线程之间的通信主要用于线程数据的同步,不像进程间数据的交换。

浙公网安备 33010602011771号