c语言进程同步互斥方法,进程互斥与同步(示例代码)

本文介绍了C语言中进程同步和互斥的概念及其实现方法。通过临界区的概念,阐述了进程互斥的必要性和准则,并探讨了加锁实现互斥的问题。进一步,文章详细讲解了信号量和P、V原语,解释了为何必须以原语方式实现,并展示了如何用P、V原语实现进程互斥。此外,还提到了进程同步的基本思想和私用信号量的应用,最后举例说明了生产者-消费者问题。
摘要由CSDN通过智能技术生成

一、进程互斥

首先我们要知道,为了保证程序执行最终结果的正确性,必须对并发执行的各进程进行制约,以控制它们的执行速度和对资源的竞争。需要回到一个问题,需要对程序哪些部分进行制约才能保证其执行结果的正确性?如:进程PA和PB共享内存 MS,进程PA和PB各执行两条语句时,可能按以下顺序执行:当进程PA执行完第一条语句,开始执行进程PB,再接着执行进程PA的第二条语句。这样会导致错误。如何保证正确性了?我们可以将各自的两条语句抽象为两个各以一个动作完成的顺序执行单位,这样执行结果的正确性就可以得到保证。这也引出了一个概念。

临界区(critical region):把不允许多个并发进程交叉执行的一段程度称为临界区。临界区是有属于不同并发进程的程序段共享公用数据或公用数据变量二引起的。

把这种由于共享某一公有资源而引起的在临界区内不允许并发进程交叉执行的现象,称为由共享公有资源而造成的对并发进程执行速度的间接制约,简称间接制约。

1、什么是互斥?

一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。也就是说,不允许两个以上的共享该资源的并发进程同时进入临界区称为互斥。

一组并发进程互斥执行时必须满足如下准则:

i)不能假设各并发进程的相对执行速度。即各并发进程享有平等地、独立地竞争公有资源的权利。

ii)并发进程中的某个进程不在临界区时,它不阻止其他进程进入临界区;

iii)并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入;

iv)并发进程中的某个进程从申请进入临界区时开始,应在有限时间内得以进入临界区。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值