"同步原语"的定义

Loo*_*oom 29 language-agnostic multithreading synchronization terminology

术语同步原语到底意味着什么?例如:互斥,临界区,等待计时器,事件,监视器,条件变量,信号量.它们都是同步原语吗?我还没有列出任何其他同步原语吗?这些是有效的问题吗?

Ada*_*man 39

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

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

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

  • "关键部分不是同步原语." 除了在Windows上,有一个名为Critical Section的同步原语:http://goo.gl/35zir(是的,我同意这是对一个定义明确的术语的可怕滥用,但我无法改变MS错误) (6认同)

小智 5

正如@Loom所建议,我正在添加哥伦比亚大学提供的此列表,作为对您问题的答案。

另请参阅Microsoft的这篇日期为2017年3月3日的文章(我觉得它比较老,哥伦比亚大学的文章也是如此)。

从我收集到的信息来看,同步原语没有很好的定义,因为它们没有正式的清单。