进程互斥与进程同步

进程之间的相互作用关系分为两种,一种是共享资源的关系,一种是相互合作的关系,前者属于进程互斥、后者属于进程同步。我们把实现这两类相互制约关系的机制,统称为进程同步机制。同步机制有四大原则:空闲让进、忙则等待、有限等待、让全等待。

进程互斥:进程间的间接作用关系。两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域。比较典型的问题是打印机的共享访问。 
进程同步:进程间的直接作用关系。在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。比较典型的问题有生产消费者问题、哲学家进餐问题等。

实现进程互斥的方式有:设定临界区、使用互斥量

1.临界区,顾名思义,有一段代码区,每次最多只能由一个进程访问。由于进程是资源分配的最小单位,所以在临界区内资源的访问只能是同一进程下的子进程或线程访问。所以临界区的使用存在着局限性。临界区的使用操作原语有两个:EnterCriticalSection() 进入临界区 
LeaveCriticalSection() 离开临界区

2.互斥量,字面上理解就是互斥访问的资源,只不过该资源是公用的,而不是某个进程私有的,所以这种机制可以实现不同进程的互斥。互斥量所使用的操作原语有四个: 
CreateMutex() 创建互斥量 
OpenMutex() 打开互斥量 
ReleaseMutex() 释放互斥量 
WaitForMultipleObjects() 等待互斥量

实现进程同步方式:使用信号量。 
信号量的特点就是允许多个进程同时访问,数量由资源数目决定。 
信号量包含的几个操作原语: 
  CreateSemaphore() 创建信号量 
  OpenSemaphore() 打开信号量 
  ReleaseSemaphore() 释放信号量 
  WaitForSingleObject() 等待信号量

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值