“同步原语”的定义。

44
“同步原语”这个术语具体是什么意思?例如:互斥锁、临界区、可等待定时器、事件、监视器、条件变量、信号量。它们都是同步原语吗?我没有列出的还有其他同步原语吗?这些问题是否合法?
2个回答

60

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

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

关键区域不是同步原语。它是必须受到保护以维护某些不变量的执行路径的一部分。您需要使用一些同步原语来保护关键区域。


15
关键区域并非同步原语,除了Windows操作系统中存在一个名为"关键段(Critical Section)"的同步原语:http://goo.gl/35zir (是的,我同意这是对一个明确定义术语的可怕误用,但我无法改变微软的错误)。 - oz10
1
这里是哥伦比亚大学提供的列表:http://www.cs.columbia.edu/~hgs/os/sync.html - zook2005
@zook2005 - 如果你能把你的评论写成答案,那将会很有趣(我可以点赞)。 - Loom
很好的解释,但是否有官方来源定义了“同步原语”是什么? - undefined

9
按照@Loom的建议,我在这里添加了这个列表,哥伦比亚大学提供,作为对你问题的回答。
此外,请查看微软于03/2017发布的这篇文章(我有一种感觉它已经过时了,但哥伦比亚大学的文章也是如此)。
据我所知,同步原语并没有明确定义,因为没有官方的列表。

这是一个仅包含链接的回答。请您能否[编辑]它并包含一份摘要,以便当这些链接失效时仍然能够找到相关信息?谢谢! - Fabio says Reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接