【发布时间】:2018-01-23 06:20:04
【问题描述】:
同步原语这个词到底是什么意思?例如:互斥体、临界区、等待定时器、事件、监视器、条件变量、信号量。它们都是同步原语吗?还有其他我没有列出的同步原语吗?这些是有效的问题吗?
【问题讨论】:
标签: multithreading language-agnostic synchronization terminology
同步原语这个词到底是什么意思?例如:互斥体、临界区、等待定时器、事件、监视器、条件变量、信号量。它们都是同步原语吗?还有其他我没有列出的同步原语吗?这些是有效的问题吗?
【问题讨论】:
标签: multithreading language-agnostic synchronization terminology
同步原语是平台(例如操作系统)为支持线程或进程同步而向其用户提供的简单软件机制。它们通常使用较低级别的机制构建(例如原子操作、内存屏障、自旋锁、上下文切换等)。
互斥量、事件、条件变量和信号量都是同步原语。共享锁和排他锁也是如此。 Monitor 通常被认为是一种高级同步工具。它是一个使用其他同步原语(通常是带有条件变量的排他锁以支持等待和信令)保证其方法互斥的对象。在某些情况下,当监视器用作构建块时,它也被视为同步原语。
关键部分不是同步原语。它是执行路径的一部分,必须防止并发执行以维护一些不变量。您需要使用一些同步原语来保护临界区。
【讨论】:
根据@Loom 的建议,我添加了哥伦比亚大学提供的this list,作为对您问题的回答。
还可以查看 Microsoft 的 this article,日期为 2017 年 3 月(我感觉它较旧,但哥伦比亚大学的文章也是如此)。
从我收集到的信息来看,同步原语的定义并不明确,因为没有正式的列表。
【讨论】: