阻塞算法和非阻塞算法

阻塞算法和非阻塞算法

阻塞算法

阻塞算法步骤

  1. 执行线程请求的操作。
  2. 阻塞争抢资源的线程,直到线程资源被释放,才有机会执行线程请求操作。

阻塞算法

​ 上图表明了阻塞算法的流程,线程A和线程B同时争抢临界区资源,线程A优先争抢到资源,这时候线程B争抢资源时,发现临界区资源已经被其他线程占用,线程B只能等待线程A释放资源后才能获取资源,阻塞线程B执行,阻塞的线程不会执行任何内容,等待线程A执行结束,当线程A执行结束释放资源后,线程B争抢到资源执行下面的流程。

非阻塞算法

非阻塞算法步骤

  1. 执行线程请求参数。
  2. 其他线程可以进入临界区,并且通知请求不能被执行,一直请求执行操作,直到执行线程操作。

非阻塞算法

​ 线程A和线程B申请临界区资源,线程A优先申请到资源,线程A正常执行,线程B申请临界区资源时,发现线程B正在执行操作,线程B直接被驳回申请,线程B进入下一轮的申请操作,直到申请成功。

文章目录
  1. 1. 阻塞算法和非阻塞算法
    1. 1.1. 阻塞算法
    2. 1.2. 非阻塞算法