linux----进程同步

进程同步主要目的是对多个进程的执行次序进行协调,使各个进程能有效的访问共享资源和相互合作。

进程之间有两种相互制约关系:间接制约关系和直接制约关系。

间接制约关系:当A进程提出打印请求时,系统将唯一的一台打印机资源分配给了B进程,则A进程只能阻塞,直到B进程释放了打印机资源。

直接制约关系:一个输入进程A通过单缓冲向进程B提供数据,当缓冲区满的时候,A进程必须阻塞。当缓冲区空的时候,B进程必须阻塞。

linux进程同步的方式:1.管道(有名管道-mkfifo/无名管道-pipe) , 2.消息队列 ,3.信号量 ,4.共享内存,5.socket通信(网络) 

1.管道可以简单理解为一个特殊文件,是对文件描述符的读写操作。

    关于管道的深入理解和使用,可以参考 http://www.2cto.com/os/201410/343247.html  ,讲解比较详细。

2.消息队列,首先得理解队列:先进先出,然后消息是具有一定格式或者顺序的数据,先到的消息优先处理。

3.信号量:只能用于处理进程或者线程的同步,不能传递消息。

4.共享内存:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存。

5.socket通信,一般适用于网络通信。



你可能感兴趣的:(linux----进程同步)