21

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

回答

32

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

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

关键部分不是同步原语。它是执行路径的一部分,为了保持一些不变量,必须保护它们免受并发执行。您需要使用一些同步原语来保护关键部分。

+6

“关键部分不是同步原语”。 除了在窗口,有一个同步原语称为临界区:http://goo.gl/35zir(是的,我同意这是一个严重滥用定义明确的术语,但我没有办法改变MS错误) – paxos1977

+1

[这里](http://www.cs.columbia.edu/~hgs/os/sync.html)是哥伦比亚大学提供的一个列表 – zook2005

+0

@ zook2005 - 将您的评论作为一个答案(我可以upvote) – Loom

1

正如@Loom所建议的那样,我将哥伦比亚大学提供的this list作为您的问题的答案。

还检查了微软的this article日期为2017年3月(我有一种感觉它是较旧的,但哥伦比亚大学的文章也是如此)。

从我所收集的内容来看,同步原语没有很好的定义,因为没有正式的列表。