zoukankan      html  css  js  c++  java
  • 《多处理器编程的艺术》读书笔记(2) 互斥

          互斥是多处理器程序设计中最常见的一种协作方式。我们将某一资源放入临界区内:某个时刻仅能被一个线程执行,称这样的特征为互斥。实现互斥的标准方法就是采用一个具有以下接口的ILock对象。
    public interface ILock 
    {
        
    void setlock();
        
    void unlock();
    }

    public class Counter
    {
        private int _value;
        private ILock _lock;

        public int getAndIncrement()
        {
             _lock.setlock();
            try
            {
               int temp = _value;
               _value = temp + 1;
               return _value;
            }
            finally
            {
                _lock.unlock();
            } 
        }
    }

          一个线程若执行了setlock()方法调用,则称该线程获得一个锁(或称上锁);若执行了unlock()方法调用,则称该线程释放这个锁(或称开锁)。上面共享计数器的实现中,就是使用ILock域来保证对象的互斥特性。线程必须按照指定的方式调用setlock()和unlock()。如果一个线程满足下列条件,则称它是良构的:
    1.一个临界区只和一个唯一的ILock对象相关联。
    2.线程准备进入临界区时调用该对象的setlock()方法。
    3.当线程离开临界区时调用unlock()方法。
  • 相关阅读:
    centos 7遇到的问题
    Exceptions&Files
    关于Transtion属性收藏
    游戏主循环知识积累
    display:inline、block、inline-block的区别
    Sublime text 3快捷键收藏
    业务逻辑详解随记
    探究Struts2运行机制,知识积累
    将博客搬至CSDN
    url随记
  • 原文地址:https://www.cnblogs.com/pennant/p/1576150.html
Copyright © 2011-2022 走看看