一起talk C栗子吧(第九十九回:C语言实例--进程的同步与互斥)


各位看官们,大家好,上一回中咱们说的是使用共享内存进行进程间通信的例子,这一回咱们说的例子是:进程间同步与互斥。闲话休提,言归正转。让我们一起talk C栗子吧!

大家还记得我们在前面章回中说过的内容吗?关于进程之间的通信,有三个问题需要解决:(参见第八十三回

  • 1.进程之间如何通信;
  • 2.进程之间如何使用临界资源;
  • 3.进程之间如何有序地执行某项任务;

前两个问题在前面的章回中我们已经解决了,今天我们来解决第三个问题。该问题就是通常所说的进程间的同步与互斥。“什么是进程的同步与互斥呢?“这时候,台下有看官在提问,看官莫急,接下来我就介绍进程间同步与互斥的概念。

1.进程间同步

所谓的同步就是指不同的进程之间按照一定的顺序来运行

比如,我们上一回中介绍的消息队列,正常的进程运行顺序是:发送消息的进程先向消息队列中发送消息,然后是接收消息的进程从消息队列中获取消息。如果发送消息的进程和接收消息的进程按照这个顺序运行,那么可以说这两个进程是同步的。反之,我们就可以说这两个进程不同步。

进程间不同步就会造成程序运行错误,比如发送消息的进程还没有向消息队列中发送消息,接收消息的进程就开始从消息队列中获取消息,那么接收消息的进程可能获取不到消息,因为消息队列中还没有消息。或者说它获取到的是消息队列中旧的消息。这显然不是我们想要的结果。

2.进程间互斥

所谓的互斥就是指不同的进程不能同时访问临界资源

比如我们在前面章回中介绍的共享内存,它本质上是内存中的一段地址空间,该地址空间可以被不同的进程使用,但是,同一个时间内,只允许一个进程使用。我们使用的计算机中,临界资源非常多,比如硬盘,内存,打印机等。

举一个容易理解的例子,如果两个进程都使用打印机打印文件,那么打印机该打印哪个进程的文件呢?所以同一段时间内,只能有一个进程使用打印机打印文件。

看官们,听完我对同步和互斥的介绍是不是觉得有点乱呢。其实,进程间的同步和互斥在本质上是一回事,只是处理问题的角度不同而已。

  • 同步是从进程的角度去处理问题,它重点关注进程的运行顺序;
  • 互斥是从临界资源的角度去处理问题,它重点关注使用临界资源的时间;

看官们,这一回咱们只介绍进程间同步与互斥相关的概念,并且举一些通俗易懂的例子进行说明,如果大家感觉理解困难的话,先不用担心,我们在后面的章回中会通过代码来说明进程间同步与互斥。到时候就会对进程间同步与互斥有更加清楚的了解。

各位看官,关于进程间同步与互斥的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值