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)操作系统中亦可有效运作。

  • 相关阅读:
    【Springboot】Springboot整合Ehcache
    时间戳转化正常的时间格式
    申请抖音企业认证流程
    js与原生进行交互
    vim 高亮
    shell 关于路径查询显示pwd
    shell 关于字符切割 cut
    linux ubuntu 关于vim得一些基本命令
    shell 在终端中打开另一个终端执行命令
    shell 获取时间
  • 原文地址:https://www.cnblogs.com/azbane/p/7561335.html
Copyright © 2011-2022 走看看