同步机制摘要
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)操作系统中亦可有效运作。

转载于:https://www.cnblogs.com/azbane/p/7561335.html

第4章 同步控制 Synchronization ----同步机制的摘要相关推荐

  1. Java并发编程实战系列15之原子遍历与非阻塞同步机制(Atomic Variables and Non-blocking Synchronization)...

    近年来,在并发算法领域的大多数研究都侧重于非阻塞算法,这种算法用底层的原子机器指令来代替锁来确保数据在并发访问中的一致性,非阻塞算法被广泛应用于OS和JVM中实现线程/进程调度机制和GC以及锁,并发数 ...

  2. boost官方文档同步机制Synchronization mechanisms overview

    参考链接 官方文档 Synchronization mechanisms overview Named And Anonymous Synchronization Mechanisms Types O ...

  3. Nature Neuroscience|群际冲突的脑间同步机制

    本文来源:"认知神经科学与学习国家重点实验室"官网 编辑:Yezi 审阅:mingzlee7 马燚娜课题组在<Nature Neuroscience> 发表论文揭示群际 ...

  4. Linux内核同步机制之(四):spin lock【转】

    转自:http://www.wowotech.net/kernel_synchronization/spinlock.html 一.前言 在linux kernel的实现中,经常会遇到这样的场景:共享 ...

  5. Java线程同步机制synchronized关键字的理解

    由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问. 需要明确的几个问题: ...

  6. Python线程同步机制: Locks, RLocks, Semaphores, Condition

    为什么80%的码农都做不了架构师?>>>    翻译自Laurent Luce的博客 原文名称:Python threads synchronization: Locks, RLoc ...

  7. .Net CLR 中的同步机制(一): 互斥体

    随着软硬件技术的发展,无论是在Web服务或者云计算,还是单一的应用程序,串行方式编写的软件越来越少,我们总是可以看见并行的存在.但是并行并不是适合于每一种场景,也完全不是将工作扔到线程池中排队运行那么 ...

  8. Java的synchronized关键字:同步机制总结

    不久前用到了同步,现在回过头来对JAVA中的同步做个总结,以对前段时间工作的总结和自我技术的条理话.JAVA的synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同 ...

  9. 解析JVM线程同步机制

    http://blog.csdn.net/thl789/article/details/566494 对多线程的支持一般是在OS级的,而Java将其做在了语言级别,这其中最吸引人的莫过于Java对线程 ...

  10. 多终端数据同步机制设计

    多终端数据同步机制设计 之前写过一篇文章数据同步流程设计的文章,这里整理一下在公众号里分享一下 Intro 因为项目需要,需要设计一个多终端数据同步的机制, 需要满足以下条件: 多个终端数据操作及同步 ...

最新文章

  1. python生成word目录_Word&Python-创建目录
  2. 统计UTF-8编码方式字符串中的符号个数
  3. Javascript之全局变量和局部变量部分讲解
  4. 关联式容器(map,set,multimap,multiset)
  5. kafka 初步学习
  6. ubuntu快速清理磁盘垃圾
  7. JVM笔记(一)数字在JVM中的表示
  8. 50-000-040-配置-MAC 安装MySQL my.cnf配置文件
  9. C++ 面向对象程序三大特性之 继承
  10. gcc之UTF-8编码
  11. Java异常:IllegalArgumentException Collections.sort报错
  12. [BZOJ5285][HNOI2018]寻宝游戏
  13. JavaScript离线帮助文档 网盘下载
  14. c语言中格式字符e E g G,C语言输出格式总结
  15. 思岚SLAMTEC A1开箱测试(实现雷达数据的查看+hector_slam建图)
  16. CentOS安装配置freeIPA
  17. 动画过渡transition
  18. 有哪些好用的App云测试平台
  19. Snowflake Snow Snowflakes
  20. 推特精准客户开发手册

热门文章

  1. java多线程-线程的实现方式
  2. 冒泡排序详解(Java实现)
  3. 三、Oracle学习笔记:DDL数据定义语句
  4. ubuntu 安装mysql 5.5.28 编译安装 innodb 配置
  5. SQL2005之后MS SQL版本 T-SQL 新增语法、函数(二)
  6. Spring RestTemplate的使用示例
  7. SSL-ZYC 2414 简写单词
  8. JavaScript跨域调用基于JSON的RESTful API
  9. Silverlight中的ControlTemplate
  10. 武汉.NET俱乐部12月活动图片及课件下载