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()方法。
  • 相关阅读:
    (转)CKEditor+CKFinder 配置
    asp.net一个带抽象工厂的三层架构完整实例
    windows phone 8 手机存储卡数据
    c#常用算法
    mvvm 事件命令
    windows phone 8 语音识别1
    windows phone 8 分辨率
    PHP通用防注入安全代码《转》
    SQL查询语句使用详解《转》
    PHP中文件包含语句的区别《转》
  • 原文地址:https://www.cnblogs.com/pennant/p/1576150.html
Copyright © 2011-2022 走看看