UCOSII 任务的同步与通信状态(保姆级别讲解)----看完不后悔系列!!!

主体内容:

思考问题:
当多个线程同步且访问同一个资源时会出现什么问题?

实例分析:
本示例为了简便,并且通俗易懂,所以采用只有两个线程同时访问同一个资源。

在现实生活中,火车站相对于其他地方来说人流量非常巨大,那我们考没考虑过这样一个问题,火车站是靠什么机制来维护呢?

比如,此时有售票口A和售票口B,这两个售票口都是同时开放的,都在同一时刻售卖同一列车的火车票,并且火车票总票数是100张,售完为止。

为了让大家更好的理解,特意做了一张图供大家参考:
UCOSII 任务的同步与通信状态(保姆级别讲解)----看完不后悔系列!!!_第1张图片

由上图可知,假设此时火车总票数只剩下一张,但是此时张三和李四都需要买票,分别问售票口A和售票口B是否还有票,此时如果售票口A和售票口B没有互相交流,那么售票口A和售票口B给张三和李四的答复都应该是有一张票。但是这如果在现实生活中是不允许出现的,所以回到刚开始的那个问题,**当多个线程同步且访问同一个资源时会出现线程不安全。**那怎样来解决这个问题呢,大家先不用着急,在之后的文章中会讲解。

那系统中常见的流程是怎样的呢?再举一个例子。这也是一个通用且适用的模型。大家了解了解。
在古代生活中,古人会通过日晷来进行计时。并且当时间到达一个固定时刻时,会有专门的敲钟人来负责敲钟,当日晷指针的影子到达中午12.00时所显示的刻度时,则产生了一个事件,这个事件使得敲钟人收到信号后开始敲钟。相当于一个负责产生事件,一个负责接收事件,并且做相应的动作。

模型图如下所示:

UCOSII 任务的同步与通信状态(保姆级别讲解)----看完不后悔系列!!!_第2张图片

你可能感兴趣的:(UCOS)