code.7z

一、概述

Guarded Suspension 中文翻译为 确保挂起

在日常线程使用中也是最常见的。

当线程在访问某个对象时,发现条件不满足,就暂时挂起该线程等待条件满足时再次访问。

Guarded Suspension 模式是一个非常基础的设计模式,它主要关注的是当某个条件(临界值)不满足时将操作的线程正确的挂起,以防止出现数据不一致或者操作超过临界值的控制范围。

比如生产者、消费者中存在两个临界值

  • 1、生产临界值:当存放产品的容器满了,将生产者挂起,等待容器有空缺在进行生产
  • 2、消费临界值:当容器中没有产品了,将消费者挂起,等待容器有产品了在进行消费

    二、简单实现

模拟一个简单的生产消费者,指定存放的容器,并设定容器上限。

相关代码如下:
01.png
代码中使用到 Guarded Suspension 的就是容器的两个临界值

  • 上限值(最大容量,用户指定,代码中为 100)
  • 下限值(容器最小值,0)