【问题标题】:Definition of "synchronization primitive"“同步原语”的定义
【发布时间】:2018-01-23 06:20:04
【问题描述】:

同步原语这个词到底是什么意思?例如:互斥体、临界区、等待定时器、事件、监视器、条件变量、信号量。它们都是同步原语吗?还有其他我没有列出的同步原语吗?这些是有效的问题吗?

【问题讨论】:

    标签: multithreading language-agnostic synchronization terminology


    【解决方案1】:

    同步原语是平台(例如操作系统)为支持线程或进程同步而向其用户提供的简单软件机制。它们通常使用较低级别的机制构建(例如原子操作、内存屏障、自旋锁、上下文切换等)。

    互斥量、事件、条件变量和信号量都是同步原语。共享锁和排他锁也是如此。 Monitor 通常被认为是一种高级同步工具。它是一个使用其他同步原语(通常是带有条件变量的排他锁以支持等待和信令)保证其方法互斥的对象。在某些情况下,当监视器用作构建块时,它也被视为同步原语。

    关键部分不是同步原语。它是执行路径的一部分,必须防止并发执行以维护一些不变量。您需要使用一些同步原语来保护临界区。

    【讨论】:

    • “关键部分不是同步原语。”除了在 Windows 上,有一个称为关键部分的同步原语:goo.gl/35zir(是的,我同意这是对定义明确的术语的严重误用,但我无法改变 MS 错误)
    • here 是哥伦比亚大学提供的名单
    • @zook2005 - 将您的评论作为答案会很有趣(我可以投票)
    【解决方案2】:

    根据@Loom 的建议,我添加了哥伦比亚大学提供的this list,作为对您问题的回答。

    还可以查看 Microsoft 的 this article,日期为 2017 年 3 月(我感觉它较旧,但哥伦比亚大学的文章也是如此)。

    从我收集到的信息来看,同步原语的定义并不明确,因为没有正式的列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      相关资源
      最近更新 更多