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();
        }  
      }
    }
    
    原创:做时间的朋友
  • 相关阅读:
    20151104内置对象
    20151102adonet2
    20151029adonet1
    20151028c#4
    20151027c#3
    20151026c#2
    20151021c#1
    20151020sql2
    20151019sql1
    Codeforces Round #261 (Div. 2) C. Pashmak and Buses(思维+构造)
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14955443.html
Copyright © 2011-2022 走看看