zoukankan      html  css  js  c++  java
  • 第4章 同步控制 Synchronization ----同步机制的摘要

    同步机制摘要
    Critical Section
      Critical section(临界区)用来实现“排他性占有”。适用范围是单一进程的各线程之间。它是:
         一个局部性对象,不是一个核心对象。
         快速而有效率。
         不能够同时有一个以上的 critical section 被等待。
         无法侦测是否已被某个线程放弃。
    Mutex
      Mutex 是一个核心对象,可以在不同的线程之间实现“排他性占有”,甚至即使那些线程分属不同进程。它是:
         一个核心对象。
        如果拥有 mutex 的那个线程结束,则会产生一个 “abandoned” 错误信息。
        可以使用 Wait...() 等待一个 mutex。
         可以具名,因此可以被其他进程开启。
        只能被拥有它的那个线程释放(released)。
    Semaphore
      Semaphore 被用来追踪有限的资源。它是:
        一个核心对象。
        没有拥有者。
        可以具名,因此可以被其他进程开启。
        可以被任何一个线程释放(released)。
    Event Object
      Event object 通常使用于 overlapped I/O(第6章),或用来设计某些自定义的同步对象。它是:
        一个核心对象。
        完全在程序掌控之下。
        适用于设计新的同步对象。
        “要求苏醒”的请求并不会被储存起来,可能会遗失掉。
        可以具名,因此可以被其他进程开启。
    Interlocked Variable
        如果 Interlocked...() 函数被使用于所谓的 spin-lock,那么它们只是一种同步机制。所谓 spin-lock 是一种 busy loop,被预期在极短时间内执行,所以有最小的额外负担(overhead)。系统核心偶尔会使用它们。除此之外,interlockedvariables 主要用于引用计数。它们:
          允许对 4 字节的数值有些基本的同步操作,不需动用到 critical section 或 mutex 之类。
          在 SMP(Symmetric Multi-Processors)操作系统中亦可有效运作。

  • 相关阅读:
    Laravel自定义分页样式
    mysql中 key 、primary key 、unique key 和 index 有什么不同
    PHP RSA公私钥的理解和示例说明
    PHP操作Excel – PHPExcel 基本用法
    Yii 1.1 常规框架部署和配置
    阿里云服务器 Ubuntu 安装 LNMP
    全国地区sql表
    十道海量数据处理面试题与十个方法大总结
    Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别
    乐观锁与悲观锁——解决并发问题
  • 原文地址:https://www.cnblogs.com/azbane/p/7561335.html
Copyright © 2011-2022 走看看