“同步原语”的定义

时间:2011-11-05 01:27:11

标签: multithreading language-agnostic synchronization terminology

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

2 个答案:

答案 0 :(得分:38)

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

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

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

答案 1 :(得分:5)

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

另请查看Microsoft的this article,日期为2017年3月(我觉得它更老了,但哥伦比亚大学的文章也是如此)。

从我收集的内容来看,同步原语没有明确定义,因为它们没有正式的列表。