zoukankan      html  css  js  c++  java
  • 第一部分:并发理论基础08->并发编程万能钥匙

    1.管程

    管程就是解决并发问题的万能钥匙

    管理共享变量以及对共享变量的操作过程,让他们支持并发

    2.MESA模型

    互斥:统一个时刻只允许一个线程访问共享资源
    同步:线程之间如何通信,协作

    解决互斥问题:将共享变量及对共享变量的操作统一封装起来。
    将线程不安全的队列封装起来,对外提供线程安全的操作方法,

    image

    每个条件变量都有一个对应的等待队列
    image

    
    public class BlockedQueue<T>{
      final Lock lock =
        new ReentrantLock();
      // 条件变量:队列不满  
      final Condition notFull =
        lock.newCondition();
      // 条件变量:队列不空  
      final Condition notEmpty =
        lock.newCondition();
    
      // 入队
      void enq(T x) {
        lock.lock();
        try {
          while (队列已满){
            // 等待队列不满 
            notFull.await();
          }  
          // 省略入队操作...
          //入队后,通知可出队
          notEmpty.signal();
        }finally {
          lock.unlock();
        }
      }
      // 出队
      void deq(){
        lock.lock();
        try {
          while (队列已空){
            // 等待队列不空
            notEmpty.await();
          }
          // 省略出队操作...
          //出队后,通知可入队
          notFull.signal();
        }finally {
          lock.unlock();
        }  
      }
    }
    
    原创:做时间的朋友
  • 相关阅读:
    Laravel 进阶笔记 3
    Laravel 进阶笔记 5
    Laravel 进阶笔记 4
    Laravel 进阶笔记 2
    Laravel 进阶笔记
    Laravel笔记.
    Think PHP-- 笔记3
    git删除远程分支
    Think PHP 3.2.3 伪静态的方法
    解决iframe IE8透明不兼容
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14955443.html
Copyright © 2011-2022 走看看