在这节课时中,我们介绍怎样用邮箱去解决任务间共享资源问题。
可能在你的印像中,邮箱只能用于传递消息,而从未听说过用于解决这类问题。是的,邮箱的主要设计用途就是用于通信,但这里我们还是可以利用其工作机制,将其用作解决共享资源问题的一种手段。 在使用和效率上,与前面所介绍的事件标志组基本一致。
主要内容
在课程中,我们介绍了邮箱的工作原理。然后提出可以利用一个称之为收发”锁消息”的方式来实现资源互斥控制,具体工作原理是这样的。
- 将邮箱看作一个装锁的容器。在初始化的时候,向邮箱中存入一个消息,相当于存入一把锁;
- 当任务需要去访问资源的时候,首先从邮箱中获取这把锁,获得资源访问权,然后再去访问资源;
- 如果有其他任务尝试去访问资源,由于邮箱中已经没有锁,任务就需要在邮箱等待队列中等待;
通过这种方式,就实现了资源之间共享的一个互斥。具体的代码演示如下:
重点难点
输出结果解释
视频中可以看到,程序的输出结果如下。
具体工作过程为: